gpt4 book ai didi

postgresql - JPA2 (EclipseLink) 和 PostgreSQL 的引用问题

转载 作者:行者123 更新时间:2023-11-29 12:06:46 24 4
gpt4 key购买 nike

使用 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)

最佳答案

似乎是一个错误,外键列没有被引用。请在 EclipseLink 中记录错误并为其投票。

DDL 是否失败?解决方法是在脚本中定义 DDL,或者仅将该列切换为全部小写。

关于postgresql - JPA2 (EclipseLink) 和 PostgreSQL 的引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4570583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com