java-ee – 在@MappedSuperclass中定义@UniqueConstraint
发布时间:2020-12-15 03:12:13 所属栏目:Java 来源:网络整理
导读:我有一个要求,其中我的许多实体需要Long值和与其他实体的@ManyToOne关系.使用MappedSuperclass可以通过以下方式轻松实现此要求: @MappedSuperclass public class BaseEntity { @Column(name = "value",nullable = false) private Long value; @JoinColumn(n
我有一个要求,其中我的许多实体需要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; 问题是长值和实体组合必须是唯一的.是否可以在超类中定义索引?如果我在实体的@Table中定义索引,则代码按预期工作 @UniqueConstraint(name = "uq1",columnNames = {"value","some_entity_id"}) 挫折是必须沿着所有子类复制约束,然后还需要复制所有更改,使继承几乎无用(绝对不是那么优雅) 总结一下真正的问题是:可以从@MappedSuperclass定义复合唯一约束吗?如果答案是否定的,那你会怎么做? PS:我知道只有当表格生成生效时,这才是相关的,它是我们编码和最佳实践政治的全部内容. 解决方法
我可以输入这个,或者我可以给你一个解决方案的链接:)
How to use @UniqueConstraint with single table inheritance (JPA)? 实质上,您不能在扩展类中覆盖@Table注释,但是,您可以在orm.xml文件中设置唯一约束(从persistence.xml引用). 这意味着,您可以添加一个唯一约束,该约束将从扩展基类的所有类继承. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |