持久化和刷新后不会填充可嵌入的PK对象

时间:2011-09-23 16:53:19

标签: java java-ee jpa persistence

我有一个嵌入式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();

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

为什么id不是0,你从未设置过它?

如果是生成的id,则需要使用@GeneratedValue对其进行注释,否则需要设置该值。