我有我不知道其可能的JPAJPA - 加入不同的表取決於柱類型
如果我讓一個問題,說表一
public class A {
Long id;
Long type;
Details details; // can this connect to B or c depends on type?
}
和表B和C是兩個不同的細節表。 (不知道有什麼共同點) 我可以連接B或C到A取決於A.type
?
感謝
阿龍
編輯:讓我嘗試更準確
我有實體
@Entity
@Table(name = "tbl_A")
public class A implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private Long id; // seems like spring's jpa has issue hanlde "_"
/*
*can i achive some thinglike
* if detailsTableType== 1 use Details as B table
*/
@OneToOne(mappedBy = "details", cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private B details;
/*
*can i achive some thinglike
* if detailsTableType== 2 use Details as C table
*/
@OneToOne(mappedBy = "details", cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private C details; //Details
/*
* this field set the from where the join should be
*/
private Long detailsTableType;
}
注意B,C 不一定分享任何東西共同點
編輯2:
一個可能的解決方案可以是使用吸氣某種黑客。這意味着: 映射在A所有可能的連接(將它們標記爲惰性)並創建一個獲取器,它將知道它應該使用哪個類型的連接..
你在這裏真正擁有的是具有多個「A」子類的類層次結構。一種'A'具有'B'細節對象,另一種具有'C'細節對象。這就像hibernate的Table-per-subclass和table-per-class-hierarchy例子的組合。見http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/inheritance.html#inheritance-mixing-tableperclass-tablepersubclass –