我有一个简单的 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();
问题:是否可以在 JPA 更新中只更新 foo_table,而不更新 bar_table。 DBA 不想给我 bar_table 的更新权限,但 JPA 似乎想要进行“深度”更新并更新 foo_table 和 bar_table。谢谢!
最佳答案
这个解决方案也有效:
@ManyToOne()
@JoinColumn(name="BAR_ID", updatable=false)
Bar bar;
关于java - JPA 更新与加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15234291/