如何解决具有“具有”关系的两个Java实体可以使用同一张表吗
我有两个表A和B:
@Entity
public class A {
}
@Entity
public class B {
private final A a;
private String someBSpecificField;
}
实体A已被很好地编码并映射到现有表。我的工作是创建B,并且出于某种原因,我更喜欢在A和B之间继承而不是继承。同时,我希望A和B具有单个表,以避免在读取时出现联接。我可以这样吗?
@Entity
@Table(name = "a")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "a_type_enum",discriminatorType =
DiscriminatorType.INTEGER)
@DiscriminatorValue("100")
public class A {
}
@Entity
@Table(name = "a")
@DiscriminatorValue("500")
public class B {
private final A a;
private String someBSpecificField;
}
解决方法
如果类型是一个复杂的对象,则需要用@Embeddable
注释该类型,并在@Entity
类中使用它。
如果您想覆盖@Embeddable
类的属性名称,以使它们具有不同的列名称,则可以使用@AttributeOverrides
注释。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。