Die*_*rda 7 eclipselink java-ee jpa-2.1
我有一个要求,其中我的许多实体需要Long值和与其他实体的@ManyToOne关系.使用MappedSuperclass可以通过以下方式轻松实现此要求:
@MappedSuperclass
public class BaseEntity {
@Column(name = "value", nullable = false)
private Long value;
@JoinColumn(name = "some_entity_id", nullable = false)
@ManyToOne(fetch = FetchType.EAGER)
private SomeEntity some;
Run Code Online (Sandbox Code Playgroud)
问题是长值和实体组合必须是唯一的.是否可以在超类中定义索引?如果我在实体的@Table中定义索引,则代码按预期工作
@UniqueConstraint(name = "uq1", columnNames = {"value", "some_entity_id"})
Run Code Online (Sandbox Code Playgroud)
挫折是必须沿着所有子类复制约束,然后还需要复制所有更改,使继承几乎无用(绝对不是那么优雅)
总结一下真正的问题是:可以从@MappedSuperclass定义复合唯一约束吗?如果答案是否定的,那你会怎么做?
PS:我知道只有当表格生成生效时,这才是相关的,它是我们编码和最佳实践政治的全部内容.
我可以把这些全部写出来,或者我可以给你一个解决方案的链接:)
如何将@UniqueConstraint与单表继承(JPA)一起使用?
本质上,您不能覆盖@Table扩展类中的注释,但是,您可以在文件中设置唯一约束orm.xml(从您的 引用persistence.xml)。
这意味着,您可以添加将从扩展基类的所有类继承的唯一约束。
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |