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,这该怎么办呀?
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,这该怎么办呀?
因为我的表没有设置主键。
我给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>