EclipseLink를 사용하여 Stat라는 개체를 저장하려고합니다. ID가 db에 있으면 해당 오브젝트를 갱신하십시오. 그렇지 않은 경우 새 개체를 만듭니다. 여기 내 물건이 있습니다 :JPA 개체 추가 또는 업데이트
@Entity
public class Stat {
@Column
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long id;
@JoinColumn
@ManyToOne
public User user;
@Column
public boolean accepted;
@Column
public boolean finished;
public Stat() {
}
}
그리고 여기에 추가/개체 업데이트 방법이 있습니다.
public long addReplaceStat(Stat stat) {
em.getTransaction().begin();
Stat oldStat = em.find(Stat.class, stat.id);
if (oldStat == null)
em.persist(stat);
else
em.merge(stat);
em.getTransaction().commit();
em.getTransaction().begin();
Stat newStat = em.find(Stat.class, stat.id);
if (newStat != null)
em.refresh(newStat);
em.getTransaction().commit();
return stat.id;
}
내 문제는 내가 말을 em.refresh()에서 예외가 있다는 것입니다 "속성 클래스 [사용자]의 [ID]를 업데이트 할 수 없습니다. 데이터베이스의 기본 키 컬럼에 매핑됩니다." 그리고 나는 왜 그런지 이해하지 못합니다. 새로 고치지 않아야 관리 대상 객체의 값을 문제없이 업데이트 할 수 있습니까?
내가 원하는 것 (추가 또는 업데이트)을 수행하는 가장 좋은 관용구는 무엇입니까?
오류의 stacdump를 추가 할 수 있습니까? –