Java 获取不带instanceOf的实体子类

Java 获取不带instanceOf的实体子类,java,hibernate,entity,hierarchy,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="

我有一个在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 
我有一个客户实体类,它链接到@MANYTONE中的Loy实体类。 客户一次只能链接到一个Loy

我想实现的是,我想查询具有唯一id(护照号)的客户类别,然后通过客户实体中的@ManyToOne映射获得特定客户的Loy

我面临的问题是,我不知道Loy的哪个子类与客户相关

  • 我可以通过instanceOf获得特定的子类,但我想尝试避免它
  • 我还可以在子类实体中添加访问者模式,但不确定这是否是最佳实践

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


    而且访问者更为OO和干净。

    但客户到底想用Loy做什么?@chris Loy包含客户需要使用的字段/列,但Loy的每个子类的字段/列都不同。谢谢您的回复。我还看到了一篇在hibernate中使用访问者模式的文章:下面是。对我来说,这听起来是个正确的答案,但我希望社区能提供更多的投入。