gpt4 book ai didi

查询Oracle View 时具有空值的Hibernate重新调整列表

转载 作者:行者123 更新时间:2023-12-04 04:05:46 26 4
gpt4 key购买 nike

当使用Hibernate 4查询Oracle View 时,我返回一个列表,该列表的大小大于0,表示例如在SQL Developer中运行相同查询时获得的元素数。但是,当我遍历列表时,我只会得到空值。

我的hibernate.cfg.xml看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<property name="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:OUT</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.default_schema">schema</property>

<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>

<property name="hibernate.connection.pool_size">1</property>

<property name="hibernate.current_session_context_class">thread</property>

<property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="hibernate.hbm2ddl.auto">update</property>

<mapping resource="be/comp/model/db/VwPersoneelslid.hbm.xml"/>
</session-factory>

VwPersoneelslid.hbm.xml看起来像:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated 9-aug-2013 10:13:31 by Hibernate Tools 4.0.0 -->
<hibernate-mapping>
<class name="be.comp.model.db.VwPersoneelslid" table="VW_PERSONEELSLID">
<composite-id name="id" class="be.comp.model.db.VwPersoneelslidId">
<key-property name="pkVwPersoneelslid" type="double">
<column name="PK_VW_PERSONEELSLID" precision="126" scale="0" />
</key-property>
<key-property name="fkVwFunctie" type="double">
<column name="FK_VW_FUNCTIE" precision="126" scale="0" />
</key-property>
<key-property name="familienaam" type="string">
<column name="FAMILIENAAM" length="80" />
</key-property>
<key-property name="voornaam" type="string">
<column name="VOORNAAM" length="80" />
</key-property>
<key-property name="code" type="string">
<column name="CODE" length="10" />
</key-property>

</composite-id>
</class>

该查询的功能是:
public List<VwPersoneelslid> findByCode(String code)
{
Session session = HibernateUtil.getSessionFactoryNeptunus().getCurrentSession();
session.beginTransaction();

List<VwPersoneelslid> list = new ArrayList();

Query query = session.createQuery("FROM VwPersoneelslid WHERE code = :code");
query.setParameter("code", code);
list = query.list();

session.getTransaction().commit();

return list;
}

该函数转换为本地SQL:
public List<VwPersoneelslid> findByCode(String code)
{
Session session = HibernateUtil.getSessionFactoryNeptunus().getCurrentSession();
session.beginTransaction();

List<VwPersoneelslid> list = new ArrayList();

Query query = session.createSQLQuery("SELECT * FROM CIPALII.VW_PERSONEELSLID WHERE code = :code").addEntity(VwPersoneelslid.class)
.setParameter("code", code);

list = query.list();

session.getTransaction().commit();

return list;
}

如果你们需要更多信息才能知道可能是什么问题,请告诉我,然后添加更多代码。 VwPersoneelslid.hbm.xml文件由Eclipse自动生成。谢谢。

最佳答案

我设法创建了一个解决方法。至少对我来说,问题在于Hibernate Tools创建了Composite-id。我无法正常工作,而没有跳过几个障碍。因此,我设法摆脱了Composite-id。在我的reveng.xml文件中,添加了:

<table name="VW_PERSONEELSLID">
<primary-key>
<key-column name="PK_VW_PERSONEELSLID" />
</primary-key>
</table>

这将生成一个id(PK_VW_PERSONEELSLID),它使我可以继续使用Hibernate Tools。我不知道这是一个肮脏的解决方法。可能会在几天后发现这一点。

关于查询Oracle View 时具有空值的Hibernate重新调整列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18147399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com