0

是否可以从 2 个可能的表中获取实体的字段?

例如:

   @Entity
   @Table(name = "TABLE_A")
   public class A{

     @Id
     @Column(name = "ID")
     @GeneratedValue(strategy = GenerationType.AUTO)
     private Long id;
   }

   @Entity
   @Table(name = "TABLE_B")
   public class B{

     @Id
     @Column(name = "ID")
     @GeneratedValue(strategy = GenerationType.AUTO)
     private Long id;
   }

@Entity
@Table(name = "TABLE_PARENT")
public class PARENT{

  // This field needs to be fetched from A table or from B table!!! by some
  // conditions
  @OneToOne
  @JoinColumn(name = "A_B_ID")
  private A a;                     
}

Parent 类中的字段需要根据某些条件从 table_A 或 table_b 中获取!

任何想法将不胜感激!

澄清:如果 Parent 实际上指向 B 实例,我不想获取 B 的实例!每个类继承的表只在 A 的表中查找,因为我们在 Parent 类中指定了他的 A 类型字段!?

你有其他想法吗?

4

2 回答 2

1

一种解决方案是从一个公共类继承A和引用B,例如CCParent类中引用。草稿可以是:

@MappedSuperclass
public class AB {
    @Id
    private Integer id;
...
}

@Entity
public class A extends AB {
...
}

@Entity
public class B extends AB {
...
}

@Entity
public class Parent {
    ...
    @Id
    private Integer id;
    @OneToOne
    private AB ab;
}

文档第 2.2.4.1 节

于 2012-07-25T11:40:14.953 回答
1

您可以通过使用休眠继承功能来实现这一点;这是一个例子; http://viralpatel.net/blogs/hibernate-inheritance-table-per-concrete-class-annotation-xml-mapping/

于 2012-07-25T11:39:36.450 回答