간단한 JPA 질문입니다.JPA Update with Join
@Entity
@Table(name="foo_table")
class Foo{
@Id @Column(name="ID")
String id;
...
@ManyToOne()
@JoinColumn(name="BAR_ID")
Bar bar;
}
@Entity
@Table(name="bar_table")
class Bar{
@Id @Column(name="ID")
String id;
@Column(name="COL3")
String col3;
}
시나리오 : 나는 다음과 같은 클래스 구조를 가지고 말 내가하는 "바"는 "푸"레코드와 관련된 업데이트 할 말.
EntityTransaction tx = em.getTransaction();
tx.begin();
int rowsUpdated = em.createQuery("UPDATE Foo f SET bar = :bar " +
"WHERE f.id = :fooId").
setParameter("fooId", fooId).
setParameter("bar", newBar).
executeUpdate();
tx.commit();
질문 :
는 여기에 지금까지 사용하고 쿼리의 단지에만 foo_table하지만 bar_table하지 업데이트 JPA 업데이트에서 할 수 있습니다. DBA는 bar_table에 대한 업데이트 권한을주지 않으려하지만 JPA는 "깊은"업데이트를 수행하고 foo_table과 bar_table을 업데이트하려고합니다. 감사!
내가 cascadeType.NONE이없는 .. 여기 내 옵션 : ALL, DETACH가, 병합, PERSIST, 새로 고침, – rtcarlson
내 나쁜 ... 제거 당신이 시도 할 수 'cascade = {}'? 나는 여기에 물건을 섞어 놓고 있을지 모르지만 나는 비슷한 문제가 있다는 느낌이 들었다 ... – Magnilex
나는 그것을 시도 할 것이다. 또한 @JoinColumn 주석에 "업데이트 가능"속성이 있습니다. 나는 그것을 거짓으로 설정하려고 노력하고있다. – rtcarlson