java程序是:
String firHql = "From Librarytab ";
session = HibernateSessionFactory.getSession();
Query  query = session.createQuery(firHql);
List lst = query.list();
for (int i = 0; i < lst.size(); i++) {
Librarytab librarytab = (Librarytab) lst.get(i);
list.add(librarytab);
}
hibernate是:
<session-factory>
<property name="connection.username">YxLibraryDB</property>
<property name="connection.url">
jdbc:oracle:thin:system/[email protected]:1521/YxLibraryDB
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="myeclipse.connection.profile">oracle</property>
<property name="connection.password">sa</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<mapping resource="com/pojo/Librarytab.hbm.xml" />
</session-factory>
映射文件是:
<hibernate-mapping>
    <class name="com.pojo.Librarytab" table="LIBRARYTAB" schema="YXLIBRARYDB" lazy="true">
        <composite-id name="id" class="com.pojo.LibrarytabId">
            <key-property name="id" type="java.lang.Long">
                <column name="ID" precision="22" scale="0" />
            </key-property>
            等等。
现象:
执行此程序,query.list()里的list数量是2,是对的,但内容全是null
如果改此程序连接sqlserver,那么查询出的list里的数量和内容都有东西,都正确。
如果改此程序为session.createSQLQuery,仍然连接oracle,那么list里的东西也都有,也正确,
问题:
就是执行session.createQuery,查询出的结果的内容是null,这该怎么办呀?

解决方案 »

  1.   

    SQLQuery可以,但是用Query不行,应该是mapping文件的问题,仔细检查看看,看有没有问题~~~~~
      

  2.   

    原因查明了,果然是mapping文件的问题。
    因为我的表没有设置主键。
    我给sqlserver设置上主键,然后做一个mapping,发现使用有主键的mapping能查询出2个结果(正确),
    使用没有主键生成的mapping查询,只能查询出一个结果,比oracle好,oracle一个都查不出来。
    然后用oracle生成mapping,把mapping的头一行<class name="com.pojo.Librarytab" table="LIBRARYTAB" schema="YXLIBRARYDB">搞过来,弄进有主键的sqlserver里,然后测试,就发现居然能查询出内容了,是oracle数据库,而且没有主键,都能查询出来。
    终版mapping文件内容是:
    <hibernate-mapping>
        <class name="com.pojo.Librarytab" table="LIBRARYTAB" schema="YXLIBRARYDB">
            <id name="id" type="java.lang.Integer">
                <column name="ID" />
                <generator class="assigned" />
            </id>
            <property name="libraryCode" type="java.lang.String">
                <column name="LibraryCode" length="50" />
            </property>
        </class>
    </hibernate-mapping>