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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值