Hibernate标准返回空结果

时间:2013-11-18 16:14:06

标签: java sql hibernate

我想使用Hibernate从数据库(Oracle)中检索数据。

我想从视图中选择所有列。该视图没有主键,因此我在Hibernate-mapping中使用了复合键。

首先是我的班级:

public class MyBean implements Serializable {
    private MyBeanId compId;
    private String col1;
    private String col2;
    // getters and setters
}

MyBeanId类的位置:

public class MyBeanId implements Serializable {
    private int id1;
    private int id2;
    // getters and setters, hashCode and equals
}

Hibernate映射:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.mypackage">
<class name="MyBean" table="MY_TABLE">
    <composite-id name="compId" class="MyBeanId ">
        <key-property column="COL_ID1" name="id1" type="int"/>
        <key-property column="COL_ID2" name="id2" type="int"/>

    </composite-id>
    <property name="col1" type="string">
        <column name="COL1" />
    </property>
    <property name="col2" type="string">
        <column name="COL2" />
    </property>
</class>
</hibernate-mapping>

我的DAO(MyBeanManagerImpl):

public List<MyBean> getMyBeans(Session session) {

    try {
        Criteria criteria = session.createCriteria(MyBean.class);
        List<MyBean> list = criteria.list();
        System.out.println(list.toString());
        return list;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }

}

我的桌子MY_TABLE:

ID1,ID2,COL1,COL2
1,2,"a","b"
3,2,"c","d"

结果是一个空列表。我已经在表格中验证了数据。当我在我的服务中使用其他经理时,获得结果没有问题,因此会话没有问题。

根本没有抛出异常,所以很奇怪它没有得到任何结果。

1 个答案:

答案 0 :(得分:5)

在你的hibernate-configuration中添加新映射的mapping-resource条目 - &gt;会话工厂配置与其他已映射的类一样。

请参阅链接https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Web_Platform/5/html/Hibernate_Core_Reference_Guide/tutorial.html#tutorial-firstapp-configuration章节'Hibernate配置',您有hibernate.cfg.xml的示例。您需要添加&lt; mapping-resouce ...条目