Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当oneToMany关系包含值时,如何使用Hibernate筛选器获取实体_Java_Hibernate_Jpa_Filter - Fatal编程技术网

Java 当oneToMany关系包含值时,如何使用Hibernate筛选器获取实体

Java 当oneToMany关系包含值时,如何使用Hibernate筛选器获取实体,java,hibernate,jpa,filter,Java,Hibernate,Jpa,Filter,我有一个用户实体: public class User implements IStandarizedEntity { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id") private Long id; @ManyToMany(fetch =

我有一个用户实体:

public class User implements IStandarizedEntity {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id;

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "web.user_role",
        joinColumns = {
            @JoinColumn(name = "user_id", referencedColumnName = "id")},
        inverseJoinColumns = {
            @JoinColumn(name = "role_id", referencedColumnName = "id")})
@Size(min = 1, max = 10)
private List<Role> roles = new ArrayList<>();
我像jpa提供者一样使用hibernate。我只想获得具有特定角色的用户。我编写命名查询来检索所有用户,现在我尝试使用@Filter只检索具有指定角色类型的用户。

我实现的是,我可以检索所有用户,然后在加载角色时,我可以加载筛选的角色列表,但这不是我想要做的。

查询时,您可以只筛选角色。 例如:

Select u from User u join fetch u.roles r where r.type = :roleType;

Join fetch将返回角色与您的筛选器匹配的所有用户。

您好,谢谢您的回复,但我有时必须进行筛选,有时则不能。这取决于我从前端收到了什么请求。我认为在需要过滤时,可以通过session.enableFilter()来实现,并使用@Filter来指定过滤。您可以看看如何实现。对于我来说,我将使用CriteriaQuery创建一个动态查询。
Select u from User u join fetch u.roles r where r.type = :roleType;