2012-03-14 67 views
1

我使用JPA2和Hibernate 3.6作为提供者。JPA在查询中实例化

我有一些像这样的代码:

final List<Object[]> result = entityManager.createQuery("SELECT qt, tt FROM ...").getResultList(); 

我有谁变换对象[]的列表SimpleClass的列表,其中包含我的Qt和TT实体的转换器。

在JPA 2中可以这样做吗? (在C#中使用LINQ,这是可能的)

final List<SimpleClass> result = entityManager.createQuery("SELECT new SimpleClass(qt, tt) FROM ...").getResultList(); 

感谢。

+1

你可以看一下这个相关答案http://stackoverflow.com/questions/2355728/jpql-create-new-object -in-select-statement-avoid-or-embrace – landal79 2012-03-14 15:34:48

+0

嗯,有趣的问题。我首先想到使用@MappedSuperclass作为包装,但看起来你不能对它进行查询。我认为好的老作品将会成为后门。 – JMelnik 2012-03-14 20:49:24

+0

@ landal79这正是我搜索的内容,我会尝试做出反馈。谢谢。 – 2012-03-19 13:31:15

回答

0

如果您映射实体,你应该能够做到:

List<SimpleClass> result = entityManager 
    .createQuery("select s from SimpleClass s", SimpleClass.class) 
    .getResultList(); 
+0

SimpleClass不是一个实体,它只是一个包含另外两个实体的包装器。 – 2012-03-14 13:29:59

+0

'.__。'也许你应该运行两个'JPQL'查询并在'SimpleClass'实例中结合结果。在这种情况下,你会得到免费的OR映射。 – beerbajay 2012-03-14 14:07:26

+0

这是一个相关的问题/答案:http://stackoverflow.com/questions/2355728/jpql-create-new-object-in-select-statement-avoid-or-embrace – 2012-03-19 13:51:02