gpt4 book ai didi

java - 带有 POJO 构造函数的 Hibernate JoinColumn(没有实体)

转载 作者:行者123 更新时间:2023-12-02 09:22:26 24 4
gpt4 key购买 nike

我有一个看起来像这样的 POJO

@AllArgsConstructor
public class POJO {
@Getter
@Setter
private String name;

@Getter
@Setter
private int age;
}

我使用此 POJO 从 hql 查询中设置值,如

session.createQuery("Select new fullyQualifiedName.POJO(emp.name, emp.age) From Employee emp where emp.id = 1");

最近,我被要求发出向 POJO 添加 List 属性的请求。如,

@AllArgsConstructor
public class POJO {
@Getter
@Setter
private String name;

@Getter
@Setter
private int age;

@Getter
@Setter
private List<Hobby> hobbies;
}

但是,此时,我不知道如何加入 Hobby 表,以列表形式获取值并传递给构造函数。

有哪些可能的方法可以实现这一目标?

最佳答案

我认为您无法再使用 new 关键字实现您想要的目标。也许其他人可能对此构造更有帮助,但我还没有看到任何提供带有 new 关键字的集合的示例。我认为这个结构有一些局限性。

至于我提出的解决方案:

  1. 将查询更改为Select emp, h From Employee emp left join Hobby h where emp.id = 1。您还可以根据您的用例使用内部联接。

  2. 为您的查询对象设置自定义 ResultTransformer。类似于:


query.setResultTransformer(
new ResultTransformer() {
@Override
public Object transformTuple(Object[] tuple, String[] aliases) {
return tuple;
}
@Override
public List transformList(List collection) {
//Each member of collection is a Object[], we are working at row level
//You should process the collection, eliminate duplicates etc and return a
//List containing a single POJO object
}
}
);

关于java - 带有 POJO 构造函数的 Hibernate JoinColumn(没有实体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58599088/

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