加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在hibernate查询返回的列表对象中迭代结果

发布时间:2020-12-14 23:22:00 所属栏目:Java 来源:网络整理
导读:我有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");ListObject result = m
我有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 documentation中的此示例:

11.4.1.2. Queries that return tuples

Hibernate queries sometimes return tuples of objects. Each tuple is returned as an array:

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();
    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读