Это очень просто. используйте re.sub, не используйте replace.
import re
replacements = {r'\bthe\b':'a',
r'\bthis\b':'that'}
def replace_all(text, dic):
for i, j in dic.iteritems():
text = re.sub(i,j,text)
return text
replace_all("the cat has this thistle.", replacements)
Он напечатает
a cat has that thistle.
Начиная с JPA 2.1, можно дать имя внешнему ключу. Например,
@ManyToOne
@JoinColumn(foreignKey=@ForeignKey(name="MY_FANCY_FK_NAME"))
Account account;
Просто убедитесь, что он используется в @JoinColumn. JavaDoc: https://docs.oracle.com/javaee/7/api/javax/persistence/ForeignKey.html#name%28%29
Обычно в корпоративном стеке администраторы баз данных не разрешают и не должны разрешать создание системных объектов в своей базе данных. Обычно они запрашивают, чтобы DDL были вставлены вручную, и вы установите ddl-auto приложений Hibernate в режим update , а не в режим create или create-drop. Это идеальный сценарий для большинства брендов, с которыми я работал. Сказав это, вы можете позволить администратору БД решить переименовать ограничения через операторы alter-table, которые Hibernate сгенерирует для вас. Кроме того, имена ограничений первичного ключа также будут управляться администраторами баз данных после передачи им DDL таблицы создания.
Если вы находитесь в роли полного стека, где решаете все, вы можете изменять имя внешнего ключа только в текущих выпусках, используя аннотацию @ForeignKey.
Но я все равно рекомендовал бы ручную вставку операторов DDL в вашу базу данных вместо того, чтобы позволить системному процессу взять на себя управление, поскольку поддержание базы данных и ее фрагментирование упрощается, если принять архитектуру DBA вручную.
Надеюсь, что это отвечает на ваш вопрос.
Hibernate имеет аннотацию @ForeignKey
, позволяющую переопределить имя ограничения. Из справочной документации:
2.4.6. Аннотации, связанные с коллекциями
(...)
Ограничения внешнего ключа, в то время как генерируется Hibernate, имеют довольно нечитаемое имя. Вы можете переопределить имя ограничения с использованием
@ForeignKey
. Обратите внимание, что эта аннотация должна быть размещен на стороне владельца отношения,inverseName
ссылка на другую сторону ограничение.@Entity public class Woman { ... @ManyToMany (каскад = {CascadeType.ALL}) @ForeignKey (name = "TO_WOMAN_FK", inverseName = "TO_MAN_FK") public Set
getMens () { вернуть мужские; } } изменить таблицу Man_Woman добавить ограничение TO_WOMAN_FK внешний ключ (woman_id) ссылки Женщина изменить таблицу Man_Woman добавить ограничение TO_MAN_FK внешний ключ (man_id) ссылки Man
Но мне неизвестен стандартный эквивалент JPA.