gpt4 book ai didi

java - 对象中带空参数的 Hql 构造函数查询

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:45 26 4
gpt4 key购买 nike

我正在尝试连接 2 个表并通过构造函数查询将结果添加到新对象。并非左表中的所有 id 都在右表中。因此,通过外连接,我希望从左表中获取所有结果,并从右表中获取结果,如果没有结果,则为空值。

看起来该对象不能保存空值。当我尝试下面的代码时,我只得到 4 个结果,所有这些结果在另一个表中都有相应的值。当我从 x.x.x.PersonWithPartner 对象中删除参数 2 时,将显示所有 49 个(预期)结果(我只修改了第二个参数,查询是相同的)

我的结论是否正确:空值不能传递给查询构造函数?我尝试将 null 作为第二个参数硬编码,但随后收到一条错误消息,这也让我认为 null 值不能作为参数传递。

我该如何解决这个问题,是否可以使第二个参数可选?因为参数二是一个对象,所以它会自动解析为空值,从而解决我的问题。

我在 pgadmin 中重新创建了查询并得到了我期望的结果。通过删除 LEFT OUTER JOIN(以及对象中的第二个参数),查询将返回我期望的所有记录。

精简查询

SELECT new  x.x.x.PersonWithPartner(p, relation.related)
FROM Person p
LEFT OUTER JOIN p.relation relation

x.x.x.PersonWithPartner 对象

@Getter
@Setter
@Entity
public class PersonWithPartner {
private Person person;
private Person partner;

public NatuurlijkPersoonWithPartner(Person person, Person partner) {
this.person = person;
this.partner = partner;
}

我期望每个记录都有一个对象,第一个参数始终填充,第二个参数要么是通过连接找到的对象,要么为空。

最佳答案

试试这个:

SELECT new  x.x.x.PersonWithPartner(p, related)
FROM Person p
LEFT OUTER JOIN p.relation relation
LEFT OUTER JOIN relation.related related

我不知道这是否有效。但可能 relation.lated 创建了隐式内部联接。

关于java - 对象中带空参数的 Hql 构造函数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57603550/

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