将休眠查询的结果转置为 POJO 列表
Posted
技术标签:
【中文标题】将休眠查询的结果转置为 POJO 列表【英文标题】:Transpose result of hibernate query into list of POJOs 【发布时间】:2016-10-11 09:34:52 【问题描述】:我有一个泛型类,其中包含具有以下代码设置的 runQuery 方法:
public Object runQuery(String query)
Query retVal = getSession().createSQLQuery(query);
return retVal.list();
我正在尝试弄清楚如何将返回的值转换为 Check 对象列表(List):
public class Check
private int id;
private String name;
private String confirmationId;
//getters and setters
我运行的大多数查询实际上都存储在 mysql 中。我知道本机查询和 resultTransforms(如果实施将意味着我必须更改我的泛型而不是在那之后)。 有什么想法可以通过当前设置完成吗?
【问题讨论】:
我相信您正在尝试使用 hibernate 作为 ORM,互联网上有大量关于此的教程:mkyong.com/tutorials/hibernate-tutorials(我建议使用注释而不是 xml 映射) @Asoub 教程到底是什么?你能指出解决我所描述问题的那个吗? 【参考方案1】:您可以找到有关 ORM 的教程 (What is Object/relational mapping(ORM) in relation to Hibernate and JDBC?)。
基本上,您向您的 Check 类添加注释以告诉 Hibernate 哪些 java 字段与哪个 DB 字段匹配,发出 JPQL(看起来像 SQL)请求,它会获取您的对象并将它们从 DB 映射到 POJO。
这是一个广泛的主题,这是一个好的开始:https://www.tutorialspoint.com/hibernate/hibernate_quick_guide.htm 这将需要一些配置,但这是值得的。这是一个关于基于注释的配置的教程:https://www.tutorialspoint.com/hibernate/hibernate_annotations.htm,但对 ORM 的工作原理的解释较少(还有 EclipseLink 作为 ORM)
否则,您可以创建自己的映射器,它从ResultSet
获取值,并将它们设置在您的类中。出于很多原因,我会推荐使用 ORM 而不是这种方法(除非你只有一个类存储在数据库中,我对此表示怀疑)。
【讨论】:
您能解释一下您的回答如何帮助我将 retVal.list() 从存储过程调用中转置为 ListList<Check> yourCheckList = getEntityManager().createQuery("Select c From Check where c.name=:yourNameParametr" , Check.class).setParameter("yourNameParameter", "todolist").getResultList();
的配置,它会自动将 JPQL 结果转换为您的类列表。
您需要重新阅读问题,我不需要帮助设置休眠引擎。我需要将 list() 返回值转置为 List以上是关于将休眠查询的结果转置为 POJO 列表的主要内容,如果未能解决你的问题,请参考以下文章