我有一個我正在嘗試定義的查詢方法,但是我目前面臨一個問題。我試圖進行的查詢是獲取我的資料庫中的所有用戶但過濾掉具有管理員角色的用戶。我有一個物體類 forUser和另一個 for Role。我的User班級有用戶 ID、用戶名和電子郵件欄位,而“角色”物體包含角色 ID 和角色名稱作為欄位。在我的用戶類物體中,我定義了一個多對多關系,定義如下:
@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 相關的物體類。
所以基本上我想知道是否可以在同一方法中創建一個使用帶和不帶授權的值的查詢,以及是否需要在其中使用準備好的陳述句?
@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']。
uj5u.com熱心網友回復:
您可以使用 JPA 內部聯接來執行此操作。它將為您遍歷連接表。
@Query("SELECT u.id, u.username, u.email FROM User u join u.roles r where r.name <> 'ADMIN'")
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/467441.html
上一篇:JPA/Hibernate:命名查詢與本機查詢|使用哪一個?
下一篇:SpringData不保存物體
