0
데이터베이스에 지속되고 플러시 된 후 ID 필드를 채우지 않는 내장 된 PK 객체가 있습니다. ID는 데이터베이스의 자동 증가 필드입니다. 이제 일반적으로임베디드 PK 객체가 지속 및 플러시 후에 채워지지 않음
, 난 그냥 새로 고침을 시도 할 것이다, 그러나 그것은 다음과 같은 오류가 발생합니다 :
"엔티티가 더 이상 데이터베이스에 존재 : 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();
감사를 만드는 코드입니다.
감사합니다. 여전히 JPA를 배우십시오. PK 객체가없고 flush()가 ID를 포착 했으므로 다른 표 안에 @GeneratedValue 표기법을 사용할 필요가 없습니다. 그래서, 이것은 나에게 완전히 명백하지 않았습니다. 다시 한번 감사드립니다. – JCab