我有我的實體如下。 我的數據模型在下面強制執行,我無法更改參考迭代。 所以我堅持使用複合鍵。 我想自動生成/使用一些發生器的訂單Id休眠組合鍵ID生成器
是的,我已閱讀下面。 http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-mapping-identifier
我不想管理id生成過程,因爲上面建議生成orderId的應用程序。
如何使部分ID生成器工作..我有什麼選擇..將不勝感激專家的一些想法。
@Entity
@Table(name = "Orders", uniqueConstraints = @UniqueConstraint(columnNames = {"partner_ID", "order_ident" }))
public class Order {
private OrderId id;
public Order() {
}
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "partnerId", column = @Column(name = "partner_ID", nullable = false)),
@AttributeOverride(name = "employeeId", column = @Column(name = "employee_ID", nullable = false)),
@AttributeOverride(name = "orderId", column = @Column(name = "order_ID", nullable = false)) })
public OrderId getId() {
return this.id;
}
public void setId(OrderId id) {
this.id = id;
}
}
@Embeddable
public class OrderId extends FactObject {
private int partnerId;
private int employeeId;
private int orderId;
public OrderId() {
}
public OrderId(int partnerId, int employeeId, int orderId) {
this.partnerId = partnerId;
this.employeeId = employeeId;
this.orderId = orderId;
}
@Column(name = "partner_ID", nullable = false)
public int getpartnerId() {
return this.partnerId;
}
public void setpartnerId(int partnerId) {
this.partnerId = partnerId;
}
@Column(name = "employee_ID", nullable = false)
public int getemployeeId() {
return this.employeeId;
}
public void setemployeeId(int employeeId) {
this.employeeId = employeeId;
}
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_STORE")
@Column(name = "order_ID",insertable=false, nullable=false, updatable=false)
public int getOrderId() {
return this.orderId;
}
public void setOrderId(int orderId) {
this.orderId = orderId;
}
public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof OrderId))
return false;
OrderId castOther = (OrderId) other;
return (this.getpartnerId() == castOther.getpartnerId())
&& (this.getemployeeId() == castOther.getemployeeId())
&& (this.getOrderId() == castOther.getOrderId());
}
public int hashCode() {
int result = 17;
result = 37 * result + this.getpartnerId();
result = 37 * result + this.getemployeeId();
result = 37 * result + this.getOrderId();
return result;
}
}
我覺得這個問題和答案將幫助: http://stackoverflow.com/questions/6405746/mapping-manytomany-with-composite-primary-key-and-annotation –
感謝鏈接,也沒幫助,你可以看到我正在嘗試生成構成主要組合鍵的3列之一的ID ..在這一點上,我正在考慮生成OrderID外部並將其設置爲我不喜歡的對象..但這個帖子沒有太多的牽引力.. – user973779
這可能有幫助:https://vladmihalcea.com/how-to-map-a-composite-identifier-using-an-automatically-generatedvalue-with-jpa-and-hibernate/ – JavaTec