如何在超类中使用@Id 通过在 Hibernate 中的另一个类中使用@Embedable



我有 2 个类,一个是Student.class(Embedded),另一个是CommonDetails.class(Embeddable)。我想创建一个学生表,其中 id、姓名、电子邮件和 id 字段作为标识符。

但它抛出此异常:

No identifier specified for entity: com.icore.mint.data.customer.service.usage.Student.

有什么解决方案是我不想在Student.class中创建字段id.我想使用CommonDetails.class.中的id

下面是代码。

常见详情.class

@Embeddable
public class CommonDetails implements Serializable {
private static final long serialVersionUID = 1L;
String id;
String name;
String email;
//Setters and Getters
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
//toString()
@Override
public String toString() {
return "CommonDetails [id=" + id + ", name=" + name + ",
email=" + email + "]";
}
}//Class

学生.class

@Table
@Table(name="student")
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
CommonDetails commonDetails;
//Setters and Getters
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "id", column = @Column(name = "id")),
@AttributeOverride(name = "name", column = @Column(name = 
"name")),
@AttributeOverride(name = "email", column = @Column(name = 
"email"))
})
public CommonDetails getCommonDetails() {
return commonDetails;
}
public void setCommonDetails(CommonDetails commonDetails) {
this.commonDetails = commonDetails;
}
//toString()
@Override
public String toString() {
return "Student [commonDetails=" + commonDetails + "]";
}
}//Class

我认为您正在寻找@EmbeddedId注释。

这是我项目的示例:

带有@Embeddable注释的类:

@Embeddable 
public class SetLogs implements Serializable{
private static final long serialVersionUID = 1L;
@Column(name="user_id")
private Integer user_id;
@Column(name="menu_id")
private Integer menu_id; 
@Column(name="logs_time")
private Date logs_time;
}

带有@EmbeddedId注释的类:

@Entity
@Table(name="logs")
public class Logs implements Serializable{
private static final long serialVersionUID = 1L;
@EmbeddedId
private SetLogs setLogs;
public SetLogs getSetLogs() {
return setLogs;
}
public void setSetLogs(SetLogs setLogs) {
this.setLogs = setLogs;
}
}

您也可以参考此链接 http://www.concretepage.com/hibernate/example-embeddedid-hibernate

希望这对您有所帮助。

相关内容

最新更新