联合主键用Hibernate注解映射方式主要有三种:
第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@Id
第二、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@EmbeddedId
第三、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并要重写equals和hashcode.最后在主类中(该类包含联合主键类中的字段)将联合主键字段都注解为@Id,并在该类上方将上这样的注解:@IdClass(联合主键类.class)
使用方式:
1、model类:
-
@Entity
-
@Table(name="JLEE01")
-
public class Jlee01 implements Serializable{
-
-
private static final long serialVersionUID = 3524215936351012384L;
-
private String address ;
-
private int age ;
-
private String email ;
-
private String phone ;
-
@Id
- private JleeKey01 jleeKey ;
主键类:JleeKey01.java
-
@Embeddable
-
public class JleeKey01 implements Serializable{
-
-
private static final long serialVersionUID = -3304319243957837925L;
-
private long id ;
-
private String name ;
-
-
-
-
public long getId() {
-
return id;
-
}
-
-
-
-
public void setId(long id) {
-
this.id = id;
-
}
-
-
-
-
public String getName() {
-
return name;
-
}
-
-
-
-
public void setName(String name) {
-
this.name = name;
-
}
-
-
@Override
-
public boolean equals(Object o) {
-
if(o instanceof JleeKey01){
-
JleeKey01 key = (JleeKey01)o ;
-
if(this.id == key.getId() && this.name.equals(key.getName())){
-
return true ;
-
}
-
}
-
return false ;
-
}
-
-
@Override
-
public int hashCode() {
-
return this.name.hashCode();
-
}
-
- }
2、model类:
-
@Entity
-
@Table(name="JLEE02")
-
public class Jlee02 {
-
-
private String address ;
-
private int age ;
-
private String email ;
-
private String phone ;
-
@EmbeddedId
- private JleeKey02 jleeKey ;
主键类:JleeKey02.java
普通java类即可。
3、model类:
-
@Entity
-
@Table(name="JLEE03")
-
@IdClass(JleeKey03.class)
-
public class Jlee03 {
-
@Id
-
private long id ;
-
@Id
- private String name ;
主键类:JleeKey03.java
分享到:
相关推荐
在Hibernate中,有三种主要的注解方式来映射联合主键,以下是对这三种方式的详细解释: 1. **使用`@Embeddable`和`@Id`** 在这种映射方式中,联合主键的字段被放在一个单独的类中,这个类需要实现`java.io....
**正文** 在Java持久化框架Hibernate中,联合主键...联合主键提供了一种灵活的方式来处理那些单一主键无法满足需求的复杂业务场景。在实际项目中,正确理解和使用联合主键对于优化数据模型和保证数据完整性至关重要。
在Java的持久化框架Hibernate中,关系映射是将...在处理复杂的数据结构时,联合主键提供了一种灵活的方式,使得实体间的关联更加自然和直观。在开发过程中,理解并熟练运用联合主键可以提高代码的可读性和维护性。
Hibernate是Java领域中一款广泛应用的...总的来说,Hibernate注解让Java开发者能够更直观地将对象模型映射到数据库,提高了开发效率,降低了出错概率。理解并熟练运用这些注解,是提升Java企业级开发能力的重要一步。
Hibernate 提供了多种继承映射策略,如 `@Inheritance(strategy=InheritanceType.SINGLE_TABLE)`、`@DiscriminatorColumn` 和 `@DiscriminatorValue`,以支持单表继承、子类表和联合主键等。 #### 映射关联关系 - ...
三、配置Hibernate映射文件 在XML配置时代,我们需要在Hibernate的映射文件(.hbm.xml)中显式声明复合主键。现在,大多数项目都使用注解配置,但如果你仍然需要处理旧的项目,这里是如何配置的示例: ```xml ...
一、Hibernate注解方式 1. **实体类注解**:在Hibernate中,我们可以使用注解来定义一个Java类为数据库中的表。例如,使用`@Entity`标记一个类为实体,`@Table`指定对应的数据库表名,`@Id`定义主键,`@...
在 Hibernate 中,映射关系是将数据库表与 Java 类之间的关联方式,使得对象模型可以与关系模型无缝对接。本篇文章将详细探讨 Hibernate 中的多种映射关系。 1. **一对一映射 (One-to-One)** 一对一映射表示两个...
总结来说,Hibernate复合主键映射是处理多字段主键的关键技术,它通过`@Embeddable`和`@EmbeddedId`注解以及相应的XML配置,使开发者能够方便地管理和操作具有复合主键的实体。在开发过程中,正确理解和使用这项功能...
Hibernate注解是元数据的一种形式,它们允许我们在Java类和属性上直接声明关于如何映射到数据库的信息,避免了XML配置文件的繁琐。通过注解,我们可以指定实体类、属性、关联关系等如何对应到数据库表和字段。 二、...
通过这种方式,你可以实现Hibernate中一对一单向外键关联及联合主键的配置。这使得两个实体间的关系更加明确,同时也方便了数据的管理和操作。在实际项目中,这样的设计可以提高数据的完整性和一致性。
在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本实例将深入探讨如何在Hibernate中实现复合主键,并提供一个具体的示例来帮助理解。 ...
在Java世界中,ORM(对象关系映射)框架如Hibernate为开发者提供了便利,将数据库操作转化为面向对象的方式,使得数据库管理更加直观。本主题聚焦于“用Hibernate映射继承关系”,我们将深入探讨Hibernate如何处理...
在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。本教程将详细讲解Hibernate中的关联关系映射配置,帮助你理解和掌握如何...
在Hibernate中,使用`@ManyToMany`注解,并创建一个中间表(通常是联合主键)来存储关联。`@JoinTable`注解用于定义中间表的详细信息。 关联映射时的注意事项: - 使用外键:Hibernate支持实体间的外键关联,但也...
这种关系可以通过外键或者联合主键来建立。例如,一个用户可能只有一个唯一的身份证信息,这时可以创建两个类,User和IdCard,通过`@OneToOne`进行关联。 二、一对多关系映射(One-to-Many) 在一个实体中,如果一...
Hibernate提供了四种主要的继承映射策略:单表策略、每个类分层结构一张表、表集策略以及联合主键策略。本文主要关注的是“每个类分层结构一张表”。 在“每个类分层结构一张表”策略中,每种具体类(Concrete ...