我是春季JPA的新手。我的要求是拥有一个复合列的ID。我有一个分类帐表,其中有两列log_id和order_id。我必须为相同的order_id插入多个记录,但我希望log_id每次仅在相同的order_id出现时才应增加。
赞:
order_id log_id
-------- -----
1234 1
1234 2
1234 3
1235 1
春季JPA是否有可能。有人可以帮忙吗? 预先谢谢!!!
答案 0 :(得分:0)
您可以使用@IdClass和@GeneratedValue实现。
代码示例:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table;
@Entity
@Table(name="LEDGER")
@IdClass( PK.class )
public class Ledger {
@Id
@Column(name = "log_id")
@GeneratedValue
public int logId;
@Id
@Column(name = "order_id")
public int orderId;
public String otherFields;
}
Id类
import java.io.Serializable;
public class PK implements Serializable{
public int logId;
public int orderId;
public PK() {
}
public PK(int logId, int orderId) {
super();
this.logId = logId;
this.orderId = orderId;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + logId;
result = prime * result + orderId;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
PK other = (PK) obj;
if (logId != other.logId)
return false;
if (orderId != other.orderId)
return false;
return true;
}
}
如需进一步阅读,请点击以下链接