首页
学习
活动
专区
圈层
工具
发布

JPQL多选
EN

Stack Overflow用户
提问于 2013-04-24 16:30:09
回答 2查看 151关注 0票数 1

我想从TypeCmplt中提取所有数据,如下所示:

代码语言:javascript
复制
    public List<TypeCmplt> listerrTypeCmplt()
throws DaoException {
    Query query = cmpltTitreEM.createQuery("select t.cdTypeCmplt, t.lbTypeCmplt from TypeCmplt t");
    List<TypeCmplt> listeType = new ArrayList<TypeCmplt>();
    listeType = query.getResultList();
    return listeType;
}

测试方法:

代码语言:javascript
复制
    @Test
public void listerComplementsParTypeTest(){
    logger.debug("Afficher la liste des types de complémént") ;

    try {
        List<TypeCmplt> type = cmpltTitreDao.listerrTypeCmplt();
        for (int i = 0; i < type.size(); i++) {
            System.out.println(type.get(i));
        }

    } catch (DaoException e) {
        logger.error("Erreur", e) ;
    }

但我得到的是:

代码语言:javascript
复制
Hibernate: select typecmplt0_.CD_TYPE_CMPLT as col_0_0_, typecmplt0_.LB_TYPE_CMPLT as col_1_0_ from TC_TYPE_CMPLT typecmplt0_
[Ljava.lang.Object;@4d2b11
[Ljava.lang.Object;@46a5c4
[Ljava.lang.Object;@2d09e0
[Ljava.lang.Object;@e38fca

有人能帮帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-24 16:42:36

您正在为结果创建一个List<TypeCmplt>。但结果列表是一个Object数组,因为您正在进行投影查询-提取TypeCmplt的单个属性。如果要获得正确的TypeCmplt实体,请将查询字符串更改为

代码语言:javascript
复制
"select t from TypeCmplt t"

如果您确实想提取实体的几个属性,但又想以一种类型安全的方式来实现,那么构造函数表达式就是最佳选择:

代码语言:javascript
复制
List<MyClass> dtos = cmpltTitreEM.createQuery("SELECT NEW com.example.MyClass( t.cdTypeCmplt, t.lbTypeCmplt) FROM TypeCmplt t").getResultList();
票数 1
EN

Stack Overflow用户

发布于 2013-04-24 16:31:34

您正在尝试打印一个名为TypeCmpltObject。尝试调用toString()。正如@kostja所说,你最好在TypeCmplt中覆盖toString()

如下所示:

代码语言:javascript
复制
System.out.println(type.get(i).toString());

或者:

代码语言:javascript
复制
TypeCmplt t = type.get(i);
System.out.println(t.getLong() + ": " + t.getString());

在这种情况下,您应该相应地替换getLong()getString()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16187111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档