我有一个在hibernate中实现实体层次结构的场景。
它是inheritancetype.joined。
父类:

@Entity
@Table(name = "LOY")
@Inheritance(strategy=InheritanceType.JOINED)
public class Loy implements Serializable

子类边界
@Entity
@Table(name = "LOY_BOUNDARY")
@PrimaryKeyJoinColumn(name="ID")
public class LoyBoundary implements Serializable

儿童阶级百分比
@Entity
@Table(name = "LOY_PERCENTAGE")
@PrimaryKeyJoinColumn(name="ID")
public class LoyPercentage implements Serializable

我有一个customer实体类,它链接到@manytoone中的loy实体类。
客户一次只能链接到一个loy。
我想实现的是,我想查询具有唯一id(passport number)的customer类,然后通过customer实体中的@manytoone映射获取特定客户的loy。
我遇到的问题是,我不知道loy的哪个子类与客户相关。
我可以去instanceof获取特定的子类,但我想尽量避免它。
我还可以在子类实体中添加访问者模式,但不确定这是否是最佳实践。

最佳答案

我要和一个客人一起去。如果instanceof是延迟加载的,则使用ManyToOne将不起作用,因为loy的实际类型不是任何子类,而是扩展loy类的hibernate代理。实际上,hibernate无法从客户的loy的id中知道它指的是哪种loy。
不管怎么说,一个访客更干净。

07-26 09:08