wce*_*ceo 4 java sql hibernate
我想使用Hibernate从数据库(Oracle)中检索数据.
我想从视图中选择所有列.视图没有主键,所以我在Hibernate-mapping中使用了复合键.
首先是我的班级:
public class MyBean implements Serializable {
private MyBeanId compId;
private String col1;
private String col2;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
MyBeanId类的位置:
public class MyBeanId implements Serializable {
private int id1;
private int id2;
// getters and setters, hashCode and equals
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我的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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的桌子MY_TABLE:
ID1,ID2,COL1,COL2
1,2,"a","b"
3,2,"c","d"
Run Code Online (Sandbox Code Playgroud)
结果是一个空列表.我已经在表格中验证了数据.当我在我的服务中使用其他管理器时,获得结果没有问题,因此会话没有问题.
根本没有抛出Exception,所以很奇怪它没有得到任何结果.
在您的hibernate-configuration - >会话工厂配置中添加新映射的映射资源条目,就像您对其他已映射的类一样.
请参阅链接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中.您需要添加<mapping-resouce ...条目
| 归档时间: |
|
| 查看次数: |
8901 次 |
| 最近记录: |