有人知道是否可以通过注释对对象属性强加标准。这与 @Where 子句类似,但是我需要过滤的属性实际上并不在执行 SELECT 的表上,因为它是被映射的。
希望这个例子能够说明:
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 ...
}
我想获取一个没有关联User
的Container
。如果 user
属性确实位于 Item
表上,则应该可以使用 @Where:
public class Container {
@OneToOne(mappedBy = "container")
@Where(clause = "user is null")
private List<Item> items;
//getter & setter ...
}
但是既然它是mappedBy,有没有办法做到这一点?这些表的连接显然已经在 SQL 中执行了。也许有一种方法可以引用 user
属性,例如HQL?
非常感谢任何帮助
最佳答案
在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 ...
}
关于java - Hibernate/JPA 使用标准作为注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20993262/