Hibernate子对象不保存

2024-02-16

我有一个员工和员工部门表。一名员工可以拥有多个部门。

我已经在 MySQL 中定义了表并使用 JPA 生成了实体。

package model;

import java.io.Serializable;
import javax.persistence.*;
import java.util.List;

/**
 * The persistent class for the emp1000 database table.
 * 
 */
@Entity
@NamedQuery(name="Emp1000.findAll", query="SELECT e FROM Emp1000 e")
public class Emp1000 implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;

    private String firstName;

    private String lastName;

    //bi-directional many-to-one association to EmpDept
    @OneToMany(mappedBy="emp1000")
    private List<EmpDept> empDepts;

    public Emp1000() {
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return this.lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public List<EmpDept> getEmpDepts() {
        return this.empDepts;
    }

    public void setEmpDepts(List<EmpDept> empDepts) {
        this.empDepts = empDepts;
    }

    public EmpDept addEmpDept(EmpDept empDept) {
        getEmpDepts().add(empDept);
        empDept.setEmp1000(this);

        return empDept;
    }

    public EmpDept removeEmpDept(EmpDept empDept) {
        getEmpDepts().remove(empDept);
        empDept.setEmp1000(null);

        return empDept;
    }

}



@Entity
@Table(name="emp_dept")
@NamedQuery(name="EmpDept.findAll", query="SELECT e FROM EmpDept e")
public class EmpDept implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;

    @Column(name="emp_dept")
    private String empDept;

    //bi-directional many-to-one association to Emp1000
    @ManyToOne
    @JoinColumn(name="emp_id")
    private Emp1000 emp1000;

    public EmpDept() {
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEmpDept() {
        return this.empDept;
    }

    public void setEmpDept(String empDept) {
        this.empDept = empDept;
    }

    public Emp1000 getEmp1000() {
        return this.emp1000;
    }

    public void setEmp1000(Emp1000 emp1000) {
        this.emp1000 = emp1000;
    }

}

当我尝试生成创建 Employee 对象和关联的部门对象并将其保存到数据库时,子表永远不会被保存。

public class StoreData {
    public static void main(String[] args) {
        Session session=new AnnotationConfiguration()  
        .configure().buildSessionFactory().openSession();  
          
        //creating transaction object  
        Transaction t=session.beginTransaction();  
        
        
        Emp1000 e1 = new Emp1000();
        e1.setFirstName("Prem");
        e1.setLastName("Anand");
        
        EmpDept d1 = new EmpDept();
        d1.setEmpDept("Maths");
        d1.setEmp1000(e1);
        
        EmpDept d2 = new EmpDept();
        d1.setEmpDept("Science");
        d1.setEmp1000(e1);
        
        ArrayList<EmpDept> deptlist = new ArrayList();
        deptlist.add(d1);
        deptlist.add(d2);
        
        
        e1.setEmpDepts(deptlist);
        
        //session.saveOrUpdate(e1);
        
        session.persist(e1);//persisting the object  
        
          
        t.commit();//transaction is committed  
        
        session.close();  
          
        System.out.println("successfully saved");  
        

    }

    }

在表中创建 Employee 对象,但不创建 Employee dept 对象。我需要更改哪些设置?

添加后出现新错误@OneToMany(mappedBy="emp1000", cascade = CascadeType.ALL):

Feb 25, 2015 8:43:43 AM org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: Field 'id' doesn't have a default value
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [model.EmpDept]
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)

您需要将持久操作级联到子实体。改变empDept映射到

@OneToMany(mappedBy="emp1000", cascade = CascadeType.ALL)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate子对象不保存 的相关文章

随机推荐

  • 改造 需要一个字符串,但在第 1 行第 2 列路径 $ 处为 BEGIN_OBJECT

    我试图只获取字符串请求 但它给出了这样的错误 Expected BEGIN ARRAY but was BEGIN OBJECT at line 1 column 2 path 我的 API 输出是这样的 status true messa
  • 如何在 Swift 4 中使用函数柯里化

    我试着去理解函数柯里化教程 https robots thoughtbot com introduction to function currying in swift但该代码似乎已经过时了 关于函数柯里化仍然不太清楚 我尝试使用这个功能
  • 如何将打印对话框添加到printpreviewdialog?

    我的老板要我创建具有打印功能的窗口窗体 但他想要打印datagridview预览后 所以现在我鼓励这个问题 我无法打印多套纸张或选择打印机或在单击打印按钮时进行任何更改printpreviewdialog 当我点击按钮时 它会直接打印纸张
  • 在 .NET 中使用 MySQL GeoSpatial 数据类型

    我正在寻找有关如何在 NET 中使用 MySQL 几何类型的信息 我使用 Sub sonic 进行 ORM 并且实际上不需要支持比 MySQL 的 POINT 类型更多的内容 MySQL NET 连接器似乎以 OpenGIS WKB 格式的
  • r 管道 image_annotate 无法按预期工作

    我正在尝试使用magick从一堆图像创建一个动画 gif 它工作得很好 但我想在创建 gif 之前为每个图像注释文本 基本上是文件名 但这不起作用 我找不到错误的原因 如下 不确定是管道符号 映射函数还是其他原因 library purrr
  • 如何在 Windows 7 上安装 SIP 和 PyQT

    我是 Python 环境的新手 在我的 Win 7 机器上安装 SIP 和 PyQt 真的很困难 这就是我到目前为止所做的 我已经下载了SIP 4 16 9 https riverbankcomputing com software sip
  • 如何覆盖 Azure Web App 自定义部分中的 web.config 值?

    在 Azure Web App 中可以轻松覆盖 web config AppSettings 部分 例如 如果我有以下 web config
  • React-redux:如何编写集成测试

    我在用Enzyme测试我的反应和还原部分 我阅读了周围的内容 发现为组件编写集成测试也是一个很好的做法 所以 这很简单 因为我必须调用操作创建者并根据存储检查它们的更新值 但我有一些返回的异步操作dispatch行动 登录 actions
  • 调整浏览器窗口大小时调整网格大小

    我用了一个填满整个窗口 http mleibman github com SlickGrid examples example12 fillbrowser html作为默认示例 尝试调整浏览器窗口的大小 但是用于网格的区域是相同的 需要重新
  • 如何从AccessibilityNodeInfo获取webview

    我正在创建一个需要使用 AccessibilityService 的应用程序 并且获取其他应用程序的窗口内容也是没有问题的 我已从窗口内容中检测到所有可用的子项 并且该子项显示在 AccessibilityNodeInfo 中 现在我在 A
  • log4net 每次运行一个文件

    我需要我的应用程序在每次运行时创建一个日志文件 我的首选格式是App log yyyy MM dd HH mm ss 如果那不可能 我会满足App log yyyy MM dd counter 这是我当前的附加程序配置
  • 最值得一读的Python模块

    我已经学习Python有一段时间了 我对其特性有了很好的了解 但我想改进我的编码风格 我认为阅读 Python 模块的源代码是个好主意 有谁可以特别推荐一下吗 相关主题 寻找美观且具有指导意义的 Python 代码的初学者 https st
  • 到 Web 服务的 XMLHttpRequest 在 Web Worker 中不起作用

    如果从主 javascript 调用 下面的代码可以完美运行 但它不会在 Web Worker 中运行 function getSpecData detailLvl startWeek endWeek mkt var params deta
  • Xcode 5 升级 - 现在 nsobject.h 存在类“NSObject”的重复接口定义错误

    我昨晚升级到了 X Code 5 现在 当我继续开发我的一个 iOS 应用程序 在以前的 Xcode 版本上编译得很好 时 我遇到了一个似乎无法解决的错误 当我构建应用程序时 出现编译错误 duplicate interface defin
  • iOS 5.x 和 iOS 6 调用 application:didFinishLaunchingWithOptions: 的次数不同

    Subj 在 iOS 5 x 中 我得到了方法调用的下一个结果 UIViewController initWithCoder UIApplicationDelegate didFinishLaunchingWithOptions UIVie
  • 容器适配器不支持迭代器

    在一篇关于 STL 的 C 文章中 有人说 由于容器适配器不支持迭代器 因此它们不能与 STL 算法一起使用 但它没有解释为什么容器适配器不支持迭代器 有人能给我同样的解释吗 具有迭代器的堆栈或队列有什么意义 根据定义 堆栈是只能压入和弹出
  • 使用 ggplot 绘制栅格因子值

    我在使用 ggplot2 绘制具有因子值的栅格时遇到问题 library ggplot2 library raster 首先 加载栅格数据 f lt system file external test grd package raster
  • Dart PetitParser 获取使用 ExpressionBuilder 创建的 AST 数据结构

    我是 petitparser 的新手 但它看起来像是解析器的声波螺丝刀 对于我的第一个项目 我正在构建代码来解析一个简单的表达式 该表达式构建 Node 对象的 AST 树 然后使用一些规则遍历该树以最小化不需要的括号 我不知道要传递什么到
  • 通过浏览器原生 Facebook 登录体验

    我见过这个问题的几种风格 但没有具体的答案 所以我自己尝试一下 我正在尝试通过浏览器在我的基于 Facebook 的应用程序中构建 Facebook 登录体验 这将要求用户尽可能不记住他们的密码 这意味着如果 他们通过桌面浏览器登录并且已经
  • Hibernate子对象不保存

    我有一个员工和员工部门表 一名员工可以拥有多个部门 我已经在 MySQL 中定义了表并使用 JPA 生成了实体 package model import java io Serializable import javax persisten