我有一個Hibernate類叫做Expression(這裏簡化了您的觀賞樂趣):休眠創建兩個主鍵時,我只想要一個
@Entity
public class Expression {
@Id
@GeneratedValue
private long id;
private String data;
@OneToMany(fetch=FetchType.EAGER)
@Cascade({CascadeType.MERGE, CascadeType.PERSIST})
private Set<Expression> dependencies;
}
這將創建兩個表,Expression(id, data)
和Expression_Expression(expression_id, dependencies_id)
。但是,Hibernate將expression_id和dependencies_id列設置爲主鍵,所以我不能有一個重複的dependencies_id,這正是我想要的。
例如,如果我有三個表達式:
Expression x = new Expression("0");
Expression y = new Expression("1");
Expression z = new Expression("x + y");
Set<Expression> tmp = new HashSet<Expression>();
tmp.add(x);
tmp.add(y);
z.setDependencies(tmp);
// Persist x, y, and z.
然後Hibernate將執行以下操作:
插入x
到Expression
表ID = 1和數據= 「0」
插入y
轉換成Expression
表,其中id = 2且data =「1」
將z
插入Expression
表中,id = 3且data =「a + B」
插入一行,在‘Expression_Expression’表expression_id = 3和dependencies_id = 1(製作z
從屬的x
。)
但是,當它試圖插入一行到Expression_Expression
表expression_id = 3和dependencies_id = 2(使z
成爲依賴於y
)我得到一個重複的輸入錯誤。
我想能夠在Expression_Expression
表中具有相同的expression_id
值多行。
任何援助將不勝感激!