繁体   English   中英

是否可以在同一方法中创建带有 AND 而不带实体类的查询? (JPA + 休眠)

[英]Is it possible to create queries with AND without entity classes in the same method? (JPA + Hibernate)

我有一个试图定义的查询方法,但是我目前遇到了一个问题。 我试图进行的查询是获取我的数据库中的所有用户但过滤掉具有管理员角色的用户。 我有一个实体 class 用于User ,另一个用于Role 我的User class 具有用户 ID、用户名和 email 的字段,而“角色”实体包含角色 ID 和角色名称作为字段。 在我的用户 class 实体中,我定义了一个多对多关系,定义如下:

 @ManyToMany(fetch = FetchType.LAZY) @JoinTable( name = "user_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id")) private Set<Role> roles = new HashSet<>();

问题是这也是生成 user_roles 表的地方,所以我没有与 user_roles 相关的实体 class。

所以基本上我想知道是否有可能在同一方法中创建一个使用带和不带权利的值的查询,以及我是否需要在其中使用准备好的语句?

 @Query("SELECT u.id,u.username,u.email FROM User u,Role r, user_role ur WHERE u.id=ur.id AND r.id=ur.id AND r.name<>\'ADMIN\'") List<User> getUsers();

我目前收到错误user_role is not mapped [SELECT u.id,u.username,u.email FROM com.Application.models.User u,com.Application.models.Role r, user_role ur WHERE u.id=ur.id AND r.id=ur.id AND r.name<>'ADMIN']

您可以使用 JPA 内部联接来执行此操作。 它将为您遍历连接表。

@Query("SELECT u.id, u.username, u.email FROM User u join u.roles r where r.name <> 'ADMIN'")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM