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>
分享到:
相关推荐
在Java的持久化框架Hibernate中,无主键表映射是一种特殊情况,主要处理那些在数据库中没有明确单一主键的表。这种情况通常出现在那些通过多个字段共同唯一标识一条记录的复合主键(Composite Key)场景。本文将详细...
本篇文章将深入探讨Hibernate如何处理复合主键映射,并通过实例进行解析。 复合主键在数据库设计中是常见的,例如,考虑一个订单明细表,其中订单号(order_id)和商品编号(product_id)结合在一起可以唯一识别一...
以上就是Hibernate主键生成的常见策略,每种策略都有其适用的场景。在实际开发中,应根据数据库类型和需求选择合适的主键生成策略,确保数据的一致性和完整性。理解并正确配置这些策略,将有助于提高程序的稳定性和...
总结来说,这三种方式都是为了在Hibernate中有效地处理联合主键的映射,每种方式都有其适用的场景和设计考虑。开发者可以根据实际需求和代码结构选择最合适的映射策略。在处理联合主键时,确保正确地实现`equals()`...
"Hibernate初之单表映射学习例子" 这个标题表明我们将探讨的是Hibernate框架在处理单个数据库表映射的基础教程。Hibernate是Java开发中一个流行的对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作...
标题"Hibernate一对一主键关联映射(双向关联)"中的"主键关联"指的是两个实体通过共享相同的主键来建立关联。"双向关联"则意味着在两个实体类中,都可以直接访问到对方的实例,即在实体A中有一个对实体B的引用,...
在Java的持久化框架...总结来说,Hibernate的一对一主键关联映射,尤其是双向关联,能有效地简化对象关系的映射,提高代码的可读性和维护性。然而,需要根据实际情况权衡其带来的性能影响,确保系统设计的高效性。
2. **@MapsId**:在`Profile`类中,我们使用`@MapsId`注解,告诉Hibernate将`Person`的主键映射到`Profile`的`person`字段,这样两个实体通过主键关联起来。 3. **mappedBy**:在`Person`类的`@OneToOne`注解中,`...
在Java的持久化框架Hibernate中,一对一(One-to-One)主键映射是一种常见的关联关系。这种映射方式使得两个实体类共享同一个主键,从而建立一对一的关系。在这个实例中,我们将深入探讨Hibernate一对一主键映射的...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理两个实体之间存在唯一对应关系时非常有用。本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个...
总之,Hibernate的一对多主键关联映射是数据库表关系在对象模型中的体现,理解和掌握这种映射方式对于Java开发者尤其重要,尤其是在进行复杂业务逻辑处理时。通过阅读和实践提供的源代码,你应该能够深入理解并运用...
在这种映射中,两个表(或实体类)通过主键进行关联,通常其中一个表的主键是另一个表的外键。在Hibernate中,我们可以通过注解或XML配置文件来实现这种关联。 ### 单项关联 在一对一主键关联映射中,"单项关联"指...
在ORM(对象关系映射)技术中,Hibernate作为一款流行的Java持久层框架,在处理数据持久化方面提供了丰富的功能和灵活性。其中,主键生成策略是Hibernate配置中的一个重要部分,它决定了表中的主键值如何生成。本文...
在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本教程将深入探讨如何在Hibernate中设置复合主键,并提供一个可直接使用的配置示例。 ...
3. 在使用复合主键时,要注意避免在多对一或一对多关系中直接使用复合主键作为外键,这可能导致映射问题。 总结,Hibernate对复合主键的处理为开发者提供了灵活性,使得处理复杂数据模型变得更加便捷。通过正确配置...
作者可能会讨论如何处理关联的懒加载和即时加载,以及可能遇到的问题和解决方案。 ### 实际应用 在实际开发中,一对一关系常用于那些逻辑上紧密耦合但又需要独立存储的数据模型,如用户个人信息和用户账户信息,...
只有在处理 Teacher 时,Hibernate 才会更新中间表。 - 如果两端都是 `inverse="true"`,则会导致关系的维护失效,因为两边都不会插入中间表的记录。这样,中间表可能不会反映出实际的关联关系。 - 相反,如果...