3

我有一个场景,我有一个在休眠中实现的实体层次结构。它是 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(护照号码)查询 Customer 类,然后通过 Customer 实体中的 @ManyToOne 映射获取特定 Customer 的 Loy 。

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

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

1 回答 1

1

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

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

于 2012-09-21T07:38:52.070 回答