[英]iterating result in list object returned by hibernate query
我有hibernate查询如下:
String mySql = "SELECT S.col1, S.col2, T.col3, T.col4, T.col5
FROM myTable S, myTable1 T
WHERE S.id = :id and S.id = T.id";
Query myQuery = this.em.createQuery(mySql);
myQuery.setParameter("id", "123");
List<Object> result = myQuery.getResultList();
表myTable和myTable1是实体类。
myTO是一个简单的java类,其属性为col1,col2,col3,col4,col5。
上述查询的结果应该映射到myTO的属性。
如何迭代结果中的列? 或者我是否错误地检索结果?
您似乎正在尝试查询表的列的子集。 为此,您可以使用Hibernate 文档中的此示例:
11.4.1.2。 返回元组的查询
Hibernate查询有时会返回对象的元组。 每个元组都以数组形式返回:
Iterator kittensAndMothers = sess.createQuery(
"select kitten, mother from Cat kitten join kitten.mother mother")
.list()
.iterator();
while ( kittensAndMothers.hasNext() ) {
Object[] tuple = (Object[]) kittensAndMothers.next();
Cat kitten = (Cat) tuple[0];
Cat mother = (Cat) tuple[1];
....
}
如果您没有问题来检索整个实体(或至少它的第一级简单属性),您可以使用:
List<Cat> cats = session.createQuery(
"from Cat where cat.name = ?")
.setString(0, name)
.list();
for ( Cat cat : cats ) {
Cat mother = cat.getMother();
...
}
你对myTable使用任何映射吗? 如果它映射到类型T,那么你可以使用:
List<MyType> list = (List<MyType>)myQuery.getResultList();
list.get(0).getProperty1();
例如,当MyTyoe中的字段“property1”映射到col1时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.