是否有人知道是否可以通过注释对对象属性强加标准。这与@Where子句类似,但是我需要过滤的属性实际上并不在执行SELECT的表上,因为它是mappedBy。
希望这个例子能说明:
public class Container {
@OneToMany(mappedBy = "container")
private List<Item> items;
//getter & setter ...
}
public class Item {
@ManyToOne
private Container container;
@OneToOne(mappedBy = "item")
private User user;
//getter & setter ...
}
public class User {
@OneToOne
private Item item;
//getter & setter ...
}
我想提取Container
,其中没有关联User
。如果user
表上的Item
属性确实存在,那么应该可以使用@Where:
public class Container {
@OneToOne(mappedBy = "container")
@Where(clause = "user is null")
private List<Item> items;
//getter & setter ...
}
但是因为它是mapBy有没有办法做到这一点?这些表的连接显然已在SQL中执行。也许有一种方法可以引用user
属性,例如HQL?
任何帮助非常感谢
答案 0 :(得分:0)
在HQL
:
select item.container from item i where i.user is null
<强> Container.java 强>
@NamedQueries({
@NamedQuery(
name = "findContainerWithNoUser",
query = "select item.container from item i where i.user is null"
)
})
@Entity
public class Container {
@OneToOne(mappedBy = "container")
private List<Item> items;
//getter & setter ...
}