gpt4 book ai didi

java - Spring Data规范,如何查询@OneToMany关系的LIKE?

转载 作者:行者123 更新时间:2023-12-01 11:31:00 25 4
gpt4 key购买 nike

我有一个名为“Client”的实体,其中包含一个列表用户。

public class Client {
@OneToMany(fetch = FetchType.EAGER, mappedBy="client")
private List<User> users;
}

我想编写一个查询,其功能如下:

SELECT *
FROM Client client
JOIN Users user
ON user.client_id = client.client_id
WHERE ( user.name LIKE '%name%' AND user.role = 'ADMINISTRATOR' )

有人知道如何使用规范吗?

通常,如果有一个用户,我会执行如下操作。但由于我们这里有一个列表,我不确定如何处理这种情况。

Path<User> user = root.<User> get("user");
queryPredicates.add(cb.like(cb.upper(user .<String>get("name")), getLikePattern(queryString)));
queryPredicates.add(cb.like(cb.upper(user .<String>get("role")), "ADMINISTRATOR));

如果我想比较一个相等的值,我可以构造一个 User 对象并执行如下操作:

User user = new User();
// set properties
queryPredicates.add(cb.isMember(user, root.<Collection<User>>get("users")));

我可以做这样的事情:

Path<List<User>> users = root.<List<User>>get("users");

但是然后呢?

谢谢,约阿希姆

最佳答案

解决方案可以在用户端,即在 UserRepository 中:

findByClientAndRoleAndNameLike(Client client, String role, String name)

关于java - Spring Data规范,如何查询@OneToMany关系的LIKE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30376153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com