Hibernate对视图的操作

Hibernate对视图进行操作时和对普通的表有些不同,下面就是一个Hibernate操作视图的例子:
视图:
SELECT a.SPID, a.SPKey, b.serviceID, b.serviceName, c.serviceItemID, c.itemName
FROM dbo.tbSPInfo a
INNER JOIN dbo.tbService b ON a.SPID = b.SPID LEFT OUTER JOIN
dbo.tbServiceItem c ON b.serviceID = c.serviceID

1.首先根据视图中的字段定义一个bean
package com.txsec.lc.is.bean;

import java.io.Serializable;

public class ServiceId implements Serializable {
    
private static final long serialVersionUID = -2298938310945830572L;
    
private String spId;
    
private String spKey;
    
private String serviceId;
    
private String serviceName;
    
private String serviceItemId;
    
private String itemName;
    
public ServiceId() {
        
super();
    }

    
public String getItemName() {
        
return itemName;
    }

    
public void setItemName(String itemName) {
        
this.itemName = itemName;
    }

    
public String getServiceId() {
        
return serviceId;
    }

    
public void setServiceId(String serviceId) {
        
this.serviceId = serviceId;
    }

    
public String getServiceItemId() {
        
return serviceItemId;
    }

    
public void setServiceItemId(String serviceItemId) {
        
this.serviceItemId = serviceItemId;
    }

    
public String getServiceName() {
        
return serviceName;
    }

    
public void setServiceName(String serviceName) {
        
this.serviceName = serviceName;
    }

    
public String getSpId() {
        
return spId;
    }

    
public void setSpId(String spId) {
        
this.spId = spId;
    }

    
public String getSpKey() {
        
return spKey;
    }

    
public void setSpKey(String spKey) {
        
this.spKey = spKey;
    }

}


2.定义一个bean,用组合方式将ServiceId包含进去
package com.txsec.lc.is.bean;

import java.io.Serializable;

public class ServiceView implements Serializable {
    
private static final long serialVersionUID = -2909733442648785569L;
    
private ServiceId id;
    
public ServiceView() {
        
super();
    }

    
public ServiceId getId() {
        
return id;
    }

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

}


3.映射文件
<?xml version="1.0" encoding="utf-8"?>

<!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.txsec.lc.is.bean.ServiceView" table="vwSPService">
  
<composite-id name="id" class="com.txsec.lc.is.bean.ServiceId">
   
<key-property name="spId" type="string">
    
<column name="SPID"/>
   
</key-property>
   
<key-property name="spKey" type="string">
    
<column name="SPKey" />
   
</key-property>
   
<key-property name="serviceId" type="string">
    
<column name="serviceID" />
   
</key-property>
   
<key-property name="serviceName" type="string">
    
<column name="serviceName"/>
   
</key-property>
   
<key-property name="serviceItemId" type="string">
    
<column name="serviceItemID"/>
   
</key-property>
   
<key-property name="itemName" type="string">
    
<column name="itemName" />
   
</key-property>
  
</composite-id>
 
</class>
</hibernate-mapping>

ok,用HQL进行查询时,就可以这样:
session.createQuery("from ServiceView sv where sv.id.serviceId = '100001'").list();

查询返回的是ServiceView对象或集合,要得到视图中字段的值,只需要调用ServiceView对象的getId()方法即可获得ServiceId对象,通过ServiceId对象的getXXX()方法,就可以访问到视图中的字段了。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值