gpt4 book ai didi

java - 如何在单表继承(JPA)中使用@UniqueConstraint?

转载 作者:行者123 更新时间:2023-11-30 08:58:16 26 4
gpt4 key购买 nike

我有一个类使用单表策略(我无法更改)扩展现有实体。我想对该实体使用 UniqueConstraint,所以我尝试了:

@Entity
@Table(name = "t_document")
public class Document implements Serializable {
...
}

@Entity
@Table(uniqueConstraints = { @UniqueConstraint(name = "Test", columnNames = { ... }) })
public class MyDocument extends Document {
...
}

根本没有使用唯一约束,日志文件中没有任何内容。在这种情况下,这是使用 UniqueConstraints 的正确方法吗?

(我们使用JPA2、JBoss 7.1)

最佳答案

您不能覆盖基类@Table 声明,这就是忽略子类uniqueConstraints 指令的原因。

使用 JPA,您可以 override annotations with xml declarations .因此,您需要在 class-pat 中添加一个 orm.xml 文件,并在其中添加唯一约束:

<entity-mappings 
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_2_0.xsd"
version="2.0">

<package>...</package>
<entity class="Document" access="PROPERTY" metadata-complete="false">
<table name="document">
<unique-constraint>
<column-name>first_column</column-name>
<column-name>second_column</column-name>
</unique-constraint>
</table>
</entity-mappings>

这样你甚至可能不需要 MyDocument 子类,如果你只用它来覆盖 DDL 模式的话。

关于java - 如何在单表继承(JPA)中使用@UniqueConstraint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27740929/

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