是否可以从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;
}
需要从table_A或table_b中获取Parent类中的字段 根据某些条件!
任何想法都将受到赞赏!
澄清:如果父实际上指向B实例我不想取 B的实例!每个类继承的表只在A的表中查找,因为我们在Parent类中指定了他的A类型字段!?
你有其他想法吗?
答案 0 :(得分:1)
你可以通过使用hibernate继承功能来实现这一点; 这是一个例子; http://viralpatel.net/blogs/hibernate-inheritance-table-per-concrete-class-annotation-xml-mapping/
答案 1 :(得分:1)
一个解决方案是从公共类继承A
和B
,例如C
,并在C
类中引用Parent
。草案可以是:
@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;
}