В PostgreSQL мне приходится заключать в кавычки все идентификаторы, иначе они будут неявно в нижнем регистре.Я бы предпочел сохранить регистр, так как «lastLoginAttemptIpAddress» гораздо более читабелен, чем «lastloginattemptipaddress».
Я создал файл orm.xml с (полное содержание ниже).Это привело к тому, что EclipseLink заключил в кавычки большинство идентификаторов, но специально не указывал имя столбца при определении ограничения внешнего ключа.Как я могу сказать EL цитировать все идентификаторы?
Я также пытался использовать кавычки в явно указанных именах таблиц / столбцов, чтобы заставить EL цитировать идентификаторы.Во-первых, это тоже не работает - такое же поведение.В дополнение к этому, (1) это заставляет меня указывать имена дважды (я уже делал это в именах методов доступа к свойствам) и способом, который невидим для инструментов рефакторинга, (2) это неправильно - кавычки не являютсячасть имени, (3) это заставляет меня исправлять кавычки на уровне POJO, когда это фактически специфическая черта системы базы данных, которую я использую.
orm.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd">
<description>description here</description>
<persistence-unit-metadata>
<persistence-unit-defaults>
<delimited-identifiers />
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
класс сущности:
@Entity
public class UserX {
...
@Id
@GeneratedValue(generator = "UserX_id_seq")
@SequenceGenerator(name = "UserX_id_seq", allocationSize = 1)
public int getId() { ... }
...
@ManyToOne(fetch = FetchType.LAZY, optional = false)
public UserX getModificationUser() { ... }
}
сгенерированный запрос (обратите внимание на пропущенные кавычки вокруг имени столбца):
ALTER TABLE "UserX" ADD CONSTRAINT "FK_UserX_modificationUser_id" FOREIGN KEY (modificationUser_id) REFERENCES "UserX" (id)