我有一个嵌入式PK对象,在持久保存并刷新到数据库后不会填充id字段。该ID是数据库中的自动递增字段。
现在正常情况下,我将尝试刷新,但是会引发以下错误:
“数据库中不再存在实体:entity.Customers [customersPK = entity.CustomersPK [id = 0,classesId = 36]]。”
public class Customers implements Serializable {
@EmbeddedId
protected CustomersPK customersPK;
...
}
@Embeddable
public class CustomersPK implements Serializable {
@Basic(optional = false)
@Column(name = "id")
private int id;
@Basic(optional = false)
@NotNull
@Column(name = "classes_id")
private int classesId;
.....
}
这是拨打电话的代码
Classes cl = em.find(Classes.class, classId);
CustomersPK custPK = new CustomersPK();
custPK.setClassesId(cl.getId());
Customers cust = new Customers(custPK);
em.persist(cust);
em.flush();
// The problem is right here where id always equals 0
int id = cust.getCustomerspk().getId();
谢谢您的帮助。
最佳答案
为什么ID不为0,您从未设置过?
如果它是生成的ID,则需要使用@GeneratedValue对其进行注释,否则需要设置该值。