我有我的实体如下。 我的数据模型在下面强制执行,我无法更改参考迭代。 所以我坚持使用复合键。 我想自动生成/使用一些发生器的订单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