gpt4 book ai didi

java - JPA 具有动态 WHERE 语句并处理 MVC 中的 JPA 连接

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:37 24 4
gpt4 key购买 nike

我有 2 个有关设置 JPA 项目的一般性问题。

问题1:
我需要能够基于表/实体列的不同组合运行查询。
例如 :如果一个表有 10 列。这意味着有很多可能的组合。
我是否需要在 DAO 和服务层中为每个独特的组合编写函数?
是否可以编写一个通用函数来避免在 DAO 和服务层编写大量函数?我将如何进行?

问题2:
我有 2 个表以及相应的 DAO 和服务。
如果我必须进行“加入查询”,我是否应该为此加入创建新的 DAO 和服务?或者我可以创建一个服务并直接在服务中处理查询,而不是使用 EntityManager 的 DAO(如 hibernate 中的 Session)?

我脑子里浮现出很多问题,但这两个对我来说是最重要的,并且会帮助我前进。

最佳答案

问题1:看这里:Spring data JPA with dynamic where clause

问题 2:在某一时刻,您需要选择如何表示连接的数据。您可以编写一个新类,并将连接的数据转换到其中。

所以table1:PhoneBookEntry,table2:Person,您将它们连接起来,然后将其转换为一个您自己称为ContactInfo的新对象。

public List<ContactData> getContacts(){
ArrayList<ContactData> result = new ArrayList<ContactData>();

List<Object[]> resultRows = em.createQuery("SELECT p.firstName, p.lastName, n.phoneNumber FROM Person p LEFT JOIN PhoneBookEntry n ON p.firstName = n.firstName AND p.lastName = n.lastName").getResultList();

for (Object[] row : resultRows) {
result.add(new ContactData(result[0], result[1], result[2]));
}

return result;
}

关于java - JPA 具有动态 WHERE 语句并处理 MVC 中的 JPA 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47438312/

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