`
Suprince
  • 浏览: 3156 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

hibernate对视图的操作(一)

阅读更多

最近因为项目需要,涉及到了hibernate对视图的操作,在网上搜索了一下,这方面的文章并不多,所以自己写一个简单的hibernate操作视图的例子,希望对大家有所帮助。

注:hibernate3.0之后才支持视图的操作。
视图:

create or replace view empdetail as
(
select e.emp_name, e.emp_sal, d.dpt_name 
from dept d, emp e 
where d.dpt_id = e.emp_dpt_id
)

 

hibernate 默认情况下会将视图中的所有字段作为复合主键。

1、EmpDetailId。java(视图的数据结构类)

public class EmpDetailId implements Serializable {

	private String empName;
	private Integer empSal;
	private String dptName;
	
	public String getEmpName() {
		return empName;
	}
	public void setEmpName(String empName) {
		this.empName = empName;
	}
	public Integer getEmpSal() {
		return empSal;
	}
	public void setEmpSal(Integer empSal) {
		this.empSal = empSal;
	}
	public String getDptName() {
		return dptName;
	}
	public void setDptName(String dptName) {
		this.dptName = dptName;
	}

}

 2、 EmpDetail。java(持久化类)

public class EmpDetail implements Serializable {

	private EmpDetailId id;

	public EmpDetailId getId() {
		return id;
	}

	public void setId(EmpDetailId id) {
		this.id = id;
	}
	
}

 3、EmpDetail.hbm.xml(映射文件)

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.xxx.xxx.EmpDetail" table="EMPDETAIL">
	<composite-id name="id" class="com.xxx.xxx.EmpDetailId">
		<key-property name="empName" type="java.lang.String" >
			<column name="EMP_NAME" />
		</key-property>
		<key-property name="empSal" type="java.lang.Integer" >
			<column name="EMP_SAL" />
		</key-property>
                <key-property name="dptName" type="java.lang.String" >
			<column name="DPT_NAME" />
		</key-property>
        </composite-id>
</class>
</hibernate-mapping>

其他的操作就和表没有区别了!

 这样 用HQL进行查询时,就可以这样:
session.createQuery("from empdetail where
empdetail .id.empName = '张三 '").list();

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics