Hibernate无主键配置文件编写

本文介绍了一种在Hibernate框架下处理无主键数据库表的方法,通过定义复合主键并重写实体类的equals和hashCode方法来实现。适用于使用Hibernate进行数据库操作但表中未设置主键的情况。

1. 环境:jdk1.4+hibernate2.0+weblogic8

一般情况下,我们建的表都会有主键,然后根据Hibernate的配置文件编写条件 有一个主键key,剩下的是Property的属性,对应的PO类也就是一个普通的javabean.然后根据HIBERNATE的轻量级session进行保存修改的操作等。

今天遇到了一张表,是没有主键的表,是一张从别处导过来的表。但是我需要用hibernate来进行操作。中间遇到一些曲折,最后觉得HIBERNATE不会搞的太麻烦吧,经过一篇博文的启发,终于找到了一种简洁的做法。

第一步:建表(略,无主键)

第二部:进行配置文件以及PO类的编写。

其中的做法就是没有主键,所以把一条记录看成一个主键,即组合主键<composite-id>

配置文件如下:

<hibernate-mapping>

<class name="com.cqgl.po.SaI18nLimitRulesPO" table="SA_I18N_LIMIT_RULES">

<composite-id>

<key-property name="aircompanyCode" type="java.lang.String">

<column name="AIRCOMPANY_CODE" />

</key-property>

<key-property name="aircompanyName" type="java.lang.String">

<column name="AIRCOMPANY_NAME" />

</key-property>

<key-property name="canbinClass" type="java.lang.String">

<column name="CANBIN_CLASS" />

</key-property>

<key-property name="discountFrom">

<column name="DISCOUNT_FROM" />

</key-property>

<key-property name="discountTo">

<column name="DISCOUNT_TO" />

</key-property>

<key-property name="refundTicketsRule" type="java.lang.String">

<column name="REFUND_TICKETS_RULE" />

</key-property>

<key-property name="refundTicketsRuleEn" type="java.lang.String">

<column name="REFUND_TICKETS_RULE_EN" />

</key-property>

<key-property name="changeDateRule" type="java.lang.String">

<column name="CHANGE_DATE_RULE" />

</key-property>

<key-property name="changeDateRuleEn" type="java.lang.String">

<column name="CHANGE_DATE_RULE_EN" />

</key-property>

<key-property name="endorsementRule" type="java.lang.String">

<column name="ENDORSEMENT_RULE" />

</key-property>

<key-property name="endorsementRuleEn" type="java.lang.String">

<column name="ENDORSEMENT_RULE_EN" />

</key-property>

<key-property name="remark" type="java.lang.String">

<column name="REMARK" />

</key-property>

<key-property name="createTime" type="java.util.Date">

<column name="CREATE_TIME" />

</key-property>

<key-property name="createUserId" type="java.lang.String">

<column name="CREATE_USER_ID" />

</key-property>

<key-property name="updateTime" type="java.util.Date">

<column name="UPDATE_TIME" />

</key-property>

<key-property name="updateUserId" type="java.lang.String">

<column name="UPDATE_USER_ID" />

</key-property>

</composite-id>

</class>

</hibernate-mapping>

第三部:重写实体类中的OBJECTequals方法和hashCode并且每个实体要实现java.io.Serializable接口

JAVA文件如下:

package com.cqgl.po;

import java.util.Date;

public class SaI18nLimitRulesPO implements java.io.Serializable {

private String aircompanyCode;

private String aircompanyName;

private String canbinClass;

private String discountFrom;

private String discountTo;

private String refundTicketsRule;

private String refundTicketsRuleEn;

private String changeDateRule;

private String changeDateRuleEn;

private String endorsementRule;

private String endorsementRuleEn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值