假设我有以下两个表:
@Entity public class Foo {
@Id private int id;
@ManyToOne()
@JoinColumn(name = "bar_id")
private Bar bar;
}
@Entity public class Bar {
@Id private int id;
private Boolean flag;
}
Run Code Online (Sandbox Code Playgroud)
我想写一个JPQL查询,Bar.flag根据一组Fooid 改变一些值.
如果这是普通的SQL我会写这样的东西:
UPDATE Bar SET flag = true WHERE id IN (SELECT bar_id from FOO where id = 3);
Run Code Online (Sandbox Code Playgroud)
但是,您无法将其转换为JPQL,因为该bar_id列未映射到实体的属性.
由于bar_id没有直接映射到FooEntity,我如何在JPQL中实现这种查询?
如果您想要一个有效的批量更新查询,则应执行以下操作:
UPDATE Bar b SET flag = true WHERE b IN (SELECT f.bar from FOO f where id = 3);
这个想法是在进行子选择时使用实体。
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |