Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 如何将自定义类用作JPA Id_Hibernate_Jpa_Spring Roo - Fatal编程技术网

Hibernate 如何将自定义类用作JPA 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

我有一个自定义类,我必须使用它作为实体的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) {
        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 
全文参考: