Hibernate处理无主键的表的映射问题,其实很简单,就是把一条记录看成一个主键,即组合主键<composite-id>。
第一步:建表(略,无主键)。
第二部:进行配置文件的编写。
第三部:重写实体类中的OBJECT的equals方法和hashCode并且每个实体要实现java.io.Serializable接口。
OK,下面可以进行相关操作了!
代码如下:
package com.quanjj.function.test.model;import java.io.Serializable;
import java.util.Date;
public class TestInfo implements Serializable {
private static final long serialVersionUID = -2132876417323439533L;
private String deviceId;
private String token;
private Date createDate;
private Date updateDate;
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
// 注意这种情况下 我们需要重写equals和hashCode
public boolean equals(Object object) {
return true;
}
public int hashCode() {
return 1;
}
}
配置文件如下:
<?xml version="1.0"?><!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.quanjj.function.test.model.TestInfo"
table="MASS_APP_DEVICE_TOKEN" schema="mass">
<composite-id>
<key-property name="deviceId" type="java.lang.String">
<column name="DEVICEID" />
</key-property>
<key-property name="token" type="java.lang.String">
<column name="TOKEN" />
</key-property>
<key-property name="createDate" type="java.util.Date">
<column name="CDATE" />
</key-property>
<key-property name="updateDate" type="java.util.Date">
<column name="UDATE" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>