Java 从Hibernate条件查询创建未映射的对象

Java 从Hibernate条件查询创建未映射的对象,java,hibernate,criteria,hibernate-criteria,Java,Hibernate,Criteria,Hibernate Criteria,通过使用常规的HQL,我能够让Hibernate通过执行以下操作来返回未映射到数据库的对象列表: List<MyUnmappedObject> result = (List<MyUnmappedObject>) session .createQuery("select new MyUnmappedObject(obj1.field1, obj2.field1, obj2.field2) from MyFirstObject obj1 join

通过使用常规的HQL,我能够让Hibernate通过执行以下操作来返回未映射到数据库的对象列表:

List<MyUnmappedObject> result = (List<MyUnmappedObject>) session
               .createQuery("select new MyUnmappedObject(obj1.field1, obj2.field1, obj2.field2) from MyFirstObject obj1 join obj1.obj2 obj2")
               .list();
List结果=(List)会话
.createQuery(“从MyFirstObject obj1 join obj1.obj2 obj2中选择新的MyUnappedObject(obj1.field1、obj2.field1、obj2.field2))
.list();
现在我尝试做同样的事情,但是使用标准。我知道如何使用投影获取列表,但是否有任何内置支持使用这些结果创建新对象?显然,我知道我可以解析结果并手动创建新对象,但我正在尝试整合所有内容。我目前正在使用以下内容,但不知道如何将其合并到直接对象创建中:

Criteria c = session.createCriteria(MyFirstObject.class, "obj1");
c.createAlias("obj1.obj2", "obj2");
c.setProjection(Projections.distinct(Projections.projectionList()
    .add(Projections.property("obj1.field1")
    .add(Projections.property("obj2.field1")
    .add(Projections.property("obj2.field2")));
List<Object[]> result = c.list();
criteriac=session.createCriteria(MyFirstObject.class,“obj1”);
c、 createAlias(“obj1.obj2”、“obj2”);
c、 setProjection(Projections.distinct(Projections.projectionList()项目)
.add(projects.property(“obj1.field1”)
.add(projects.property(“obj2.field1”)
.add(projects.property(“obj2.field2”));
列表结果=c.List();

如果有任何帮助,我们将不胜感激。

为什么您不能直接映射它?它是一个预先存在的类,是一个非常大的项目的一部分,我不想/不应该编辑。它与数据库中的表不对应。您可以提取
MyFirstObject
的列表,然后手动将其转换为您需要的任何内容。无需使用hibernate进行编辑您可以使用类似于推土机的工具为您进行转换。