我希望是一个简单的 JPA 问题。假设我有以下类结构:
@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;
}
场景:假设我想更新“Foo”记录与哪个“Bar”相关联。
这是我目前使用的查询:
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。谢谢!