gpt4 book ai didi

java - 如何将返回的对象转换为所需的bean/pojo

转载 作者:行者123 更新时间:2023-11-30 02:40:26 24 4
gpt4 key购买 nike

我的要求是说我有两张表:

T1: id,name,email

T2: id,address

为了从两个表中获取数据,我做了如下操作:

Collection  ls=null;
EntityManager em=ConnectionUtils.getEntityManager();
tx= em.getTransaction();
tx.begin();
Query q=em.createQuery("select t1.name,t2.address from T1 t1, T2 t2");
ls=(List<T1T2>)q.getResultList();

OP:[[Ljava.lang.Object;@e836bd1, [Ljava.lang.Object;@561b6dc8, [Ljava.lang.Object;@22c491a2, [Ljava.lang.Object;@17353483, [Ljava.lang.Object;@260a905c, [Ljava.lang.Object;@7f8b9b86, [Ljava.lang.Object;@268fbbd5, [Ljava.lang.Object;@2674b0ba, [Ljava.lang.Object;@36fe970f, [Ljava.lang.Object;@46f75fe, [Ljava.lang.Object;@31ab78f8, [Ljava.lang.Object;@7092fb41, [Ljava.lang.Object;@41ada224, [Ljava.lang.Object;@6e700b2b]

是的,这很烦人。我正在获取数据,但它是一个普通的对象。

我将 pojo 创建为:

T1T2: String name;String address; to get returned object in this format. but getting proper format instead Entity error and that pojo is not error.

我想要与将 json 字符串编码到相应的 pojo 相同类型的概念。

最佳答案

如果你想使用JPA映射到POJO的使用@SqlResultSetMapping注释

假设 T1T2 有一个构造函数 T1T2(String name, String address) 将其添加到任何实体类定义中

@SqlResultSetMapping(name = "CUSTOM_MAPPING", classes = @ConstructorResult(
targetClass = T1T2.class,
columns = {@ColumnResult(name = "name", type = String.class),
@ColumnResult(name = "address", type = String.class)}))

现在您可以使用此映射:

Query q=em.createNativeQuery("select t1.name,t2.address from T1 t1, T2 t2","CUSTOM_MAPPING");
List<T1T2> = q.getResultList();

请注意,它仅适用于 native 查询。我假设 T1 和 T2 之间的 JPA 实体级别没有定义关联,否则整个过程就过时了。如果存在关联,请使用 @JoinTable 注解来声明它,JPA 将确保与实体一起获取关联。

关于java - 如何将返回的对象转换为所需的bean/pojo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41907176/

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