使用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)
答案 0 :(得分:3)
似乎是未引用外键列的错误。请在EclipseLink中记录错误并投票支持。
DDL是否失败?解决方法是在脚本中定义DDL,或者只将该列切换为小写。