hibernate 映射视图及相应问题

视图(使用nvl函数的目的在于解决hibernate在联合主键情况下,主键中有空值时造成读取的list为null的情况)
create or replace view ticket_statistical 
   (invoice_code,invoice_num,invoice_person,invoice_date,customer_name,identity_num,project_id,unit_price_id,sum_money,status) as
  	select NVL(a.invoice_code,'0'),NVL(a.invoice_num,'0'),NVL(a.invoice_person,'0'),a.invoice_date,NVL(a.customer_name,'0'),
    NVL(a.identity_num,'0'),NVL(a.project_id,'0'),NVL(b.unit_price_id,'0'),NVL(a.sum_money,'0'),NVL(a.status,'0') 
	from ism_invoice a left join (select * from (select i.id,i.invoice_id,i.unit_price_id,Row_number() OVER (PARTITION BY i.invoice_id order by i.invoice_id) rn  from ism_invoice_item i ) where rn=1) b 
	on a.id=b.invoice_id;

两个pojo

1.联合主键

public class TicketStatisticalViewId extends AbstractEntity implements java.io.Serializable {

	private String invoice_code;
	private String invoice_num;
	private String invoice_person;
	private Date invoice_date;
	private String customer_name;
	private String identity_num;
	private String project_id;
	private String unit_price_id;
	private String sum_money;
	private String status;
	private User user;			//开票人
	private OmsProjects omsProjects; //项目
	private IsmChargingUnit charging;
	public String getInvoice_code() {
		return invoice_code;
	}
	public void setInvoice_code(String invoice_code) {
		this.invoice_code = invoice_code;
	}
	public String getInvoice_num() {
		return invoice_num;
	}
	public void setInvoice_num(String invoice_num) {
		this.invoice_num = invoice_num;
	}
	public Date getInvoice_date() {
		return invoice_date;
	}
	public void setInvoice_date(Date invoice_date) {
		this.invoice_date = invoice_date;
	}
	public String getCustomer_name() {
		return customer_name;
	}
	public void setCustomer_name(String customer_name) {
		this.customer_name = customer_name;
	}
	public String getIdentity_num() {
		return identity_num;
	}
	public void setIdentity_num(String identity_num) {
		this.identity_num = identity_num;
	}
	public String getSum_money() {
		return sum_money;
	}
	public void setSum_money(String sum_money) {
		this.sum_money = sum_money;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	/*public String getInvoice_person() {
		return invoice_person;
	}
	public void setInvoice_person(String invoice_person) {
		this.invoice_person = invoice_person;
	}
	public String getProject_id() {
		return project_id;
	}
	public void setProject_id(String project_id) {
		this.project_id = project_id;
	}
	public String getUnit_price_id() {
		return unit_price_id;
	}
	public void setUnit_price_id(String unit_price_id) {
		this.unit_price_id = unit_price_id;
	}*/

	public OmsProjects getOmsProjects() {
		return omsProjects;
	}
	public void setOmsProjects(OmsProjects omsProjects) {
		this.omsProjects = omsProjects;
	}
	public User getUser() {
		return user;
	}
	
	public void setUser(User user) {
		this.user = user;
	}
	public IsmChargingUnit getCharging() {
		return charging;
	}
	public void setCharging(IsmChargingUnit charging) {
		this.charging = charging;
	}
	
	
	
}

整合主键

public class TicketStatisticalView extends AbstractEntity implements java.io.Serializable{

	private TicketStatisticalViewId id;
	public TicketStatisticalViewId getId() {
		return id;
	}

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

mapping

<hibernate-mapping>
    <class name="com.zhongyuan.invoice.ticket.pojo.TicketStatisticalView"  table="ticket_statistical">
    <synchronize table="ism_invoice"/>
    <synchronize table="ism_invoice_item"/>
        <composite-id name="id" class="com.zhongyuan.invoice.ticket.pojo.TicketStatisticalViewId">

        <key-property name="customer_name" type="string">
            <column name="customer_name"/>
        </key-property>
        <key-property name="identity_num" type="string">
            <column name="identity_num"/>
        </key-property>
        <key-property name="invoice_code" type="string">
            <column name="invoice_code"/>
        </key-property>
        <key-property name="invoice_num" type="string">
            <column name="invoice_num"/>
        </key-property>
        <key-property name="invoice_date" type="timestamp">
            <column name="invoice_date"/>
        </key-property>
        <key-property name="sum_money" type="string">
            <column name="sum_money"/>
        </key-property>
        <key-property name="status" type="string">
        <column name="status"/>
        </key-property>
        <!-- <key-property name="invoice_person" type="string">
        <column name="invoice_person"/>
        </key-property>
        <key-property name="project_id" type="string">
        <column name="project_id"/>
        </key-property>
        <key-property name="unit_price_id" type="string">
        <column name="unit_price_id"/>
        </key-property> -->
        <key-many-to-one name="user" class="com.qingshu.huachen.sys.org.pojo.User">
        	<column name="invoice_person"></column>
        </key-many-to-one>
        <key-many-to-one name="omsProjects" class="com.zhongyuan.invoice.ticket.pojo.OmsProjects">
        	<column name="project_id"></column>
        </key-many-to-one>
        <key-many-to-one name="charging" class="com.zhongyuan.invoice.ticket.pojo.IsmChargingUnit">
        	<column name="unit_price_id"></column>
        </key-many-to-one>
        </composite-id>
        
        </class>
</hibernate-mapping>

查询语句

from TicketStatisticalView b where b.id.status='1'



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值