获取没有instanceOf的实体子类

时间:2012-09-21 06:39:38

标签: java hibernate entity hierarchy

我有一个场景,我在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 

@ManyToOne 客户实体类 链接 Loy实体类。 客户一次只能链接到一个Loy。

我想要达到的目标是,我想使用唯一ID(护照号码)查询客户类,然后通过@获取特定客户的Loy Customer实体中的ManyToOne映射。

我遇到的问题是我不知道Loy的哪个子类与客户有关。

  1. 我可以去instanceOf获取特定的子类,但我想尝试避免它。
  2. 我还可以在子类实体中添加访问者模式,但不确定这是否是最佳实践。

1 个答案:

答案 0 :(得分:1)

我会和一位访客一起去。如果instanceof是延迟加载的,则使用ManyToOne将不起作用,因为Loy的实际类型不是您的任何子类,而是扩展Loy类的Hibernate代理。实际上,Hibernate无法从客户中的loy ID中知道它指的是哪种Loy。

无论如何,访客更加OO和清洁。