gpt4 book ai didi

java - 使用数组进行 JPA 查找

转载 作者:行者123 更新时间:2023-12-02 05:01:49 25 4
gpt4 key购买 nike

我有单向关系。这里我有 Employee 和 Andress 实体。在员工实体中,我有以下代码:

@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "HOME_ADDRESS")
private Address homeAddress;

我有一个 Adress 对象数组,想要编写一个查找,返回映射到这些地址的 Customer 对象数组。

select e from Employee e where e.homeAddress.id IN '?'

我不知道如何处理“?”部分。是循环访问地址数组、将 id 添加到字符串并将其作为参数传递给上面的查询的唯一选项,还是有办法将数组传递给查询并期望相同的结果?

最佳答案

不,您不会将其作为字符串传递,而是作为 ID 集合传递。并且您的查询无效。应该是:

String jpql = "select e from Employee e where e.homeAddress.id IN :addresses";
Set<Long> addressIds = Arrays.stream(addresses)
.map(Address::getId)
.collect(Collectors.toSet());
return em.createQuery(jpql, Employee.class)
.setParameter("addresses", addressIds)
.getResultList();

这使用 Java 8 将地址数组转换为一组 ID,但您当然可以使用古老的 for 循环。

关于java - 使用数组进行 JPA 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28208794/

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