Hibernate:只需保存一个以@EmbeddedId为主键的实体

database

1个回答

写回答

berrylol4

2025-07-05 11:00

+ 关注

Java
Java

## 使用Hibernate保存带有@EmbeddedId主键的实体

Hibernate是一个流行的Java持久化框架,用于将Java对象映射到数据库表。在本文中,我们将讨论如何使用Hibernate保存一个带有@EmbeddedId注解的实体,其中主键是嵌入式对象。

嵌入式主键的定义

在Hibernate中,我们可以使用@EmbeddedId注解来定义嵌入式主键。这种方式允许我们在实体中使用一个对象作为复合主键,而不是简单的基本类型。让我们首先定义一个简单的嵌入式主键类。

Java

import Java.io.Serializable;

import Javax.persistence.Embeddable;

@Embeddable

public class EmployeeId implements Serializable {

private Long departmentId;

private Long employeeNumber;

// 省略构造函数、getter和setter方法

}

实体类的定义

接下来,我们将在实体类中使用这个嵌入式主键。

Java

import Javax.persistence.EmbeddedId;

import Javax.persistence.Entity;

@Entity

public class Employee {

@EmbeddedId

private EmployeeId employeeId;

private String name;

private String position;

// 省略构造函数、getter和setter方法

}

在这个例子中,Employee类使用@EmbeddedId注解来声明EmployeeId作为主键的嵌入式对象。

保存实体对象

现在,我们将演示如何使用Hibernate保存这个带有嵌入式主键的实体对象。

Java

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class MAIn {

public static void mAIn(String[] args) {

// 创建Hibernate配置

Configuration configuration = new Configuration().configure("hibernate.cfg.XML");

// 创建SessionFactory

SessionFactory sessionFactory = configuration.buildSessionFactory();

// 创建Session

try (Session session = sessionFactory.openSession()) {

// 开启事务

session.beginTransaction();

// 创建嵌入式主键对象

EmployeeId employeeId = new EmployeeId();

employeeId.setDepartmentId(1L);

employeeId.setEmployeeNumber(101L);

// 创建实体对象

Employee employee = new Employee();

employee.setEmployeeId(employeeId);

employee.setName("John Doe");

employee.setPosition("Developer");

// 保存实体对象

session.save(employee);

// 提交事务

session.getTransaction().commit();

} catch (Exception e) {

e.printStackTrace();

}

}

}

通过使用@EmbeddedId注解,我们可以轻松地在Hibernate中定义并保存带有嵌入式主键的实体。这提供了一种灵活且强大的方式来映射复杂的数据库结构到Java对象模型中。在上述例子中,我们展示了如何定义嵌入式主键类、实体类,并使用Hibernate保存实体对象的简单步骤。希望这个例子能帮助你更好地理解Hibernate中嵌入式主键的使用。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号