Hibernate 如何将自定义类用作JPA Id
我有一个自定义类,我必须使用它作为实体的Id。情况如下Hibernate 如何将自定义类用作JPA Id,hibernate,jpa,spring-roo,Hibernate,Jpa,Spring Roo,我有一个自定义类,我必须使用它作为实体的Id。情况如下 public class ProductId { private final String id; public ProductId(String id) { this.id = id; } public String getId() { return id; } @Override public boolean equals(Object o) { if (this == o) { retur
public class ProductId {
private final String id;
public ProductId(String id) {
this.id = id;
}
public String getId() {
return id;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof ProductId)) {
return false;
}
ProductId productId = (ProductId) o;
if (!id.equals(productId.id)) {
return false;
}
return true;
}
@Override
public int hashCode() {
return id.hashCode();
}
}
如何将此列用作JPA实体的Id列。会不会是按照
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private ProductId id;
我从Spring ROO生成的代码中获得灵感和指导您可以使用
@embedded
注释ID类,并将最终实体中的字段注释为@EmbeddedId
请参阅:只需根据定义将@IdClass定义为您的类即可 PK应该符合这些要求
如果您是从roo shell构建实体,则可以使用
--identifierType
参数指定id类:
roo> entity --class ~.YourClass --identifierType your.package.ProductId
全文参考: