ORA-01400: 无法将 null 插入 (TABLE.COLUMN)(休眠)

2023-12-26

我正在使用 hibernate 4.3,oracle 11:

当我想插入一个员工时(它与类别有一对多的关系(一个类别有很多员工)),首先我将一个类别插入数据库,然后我尝试将一个员工插入数据库并得到一个异常,实体的代码是由hibernate生成的,所以我不知道出了什么问题,问题似乎是当我插入员工时 Hibernate 没有插入 ID_CAT,我做错了什么?我也尝试从休眠生成表,但给了我同样的错误,感谢您的关注,我希望您能帮助我! (类别和员工都与实体“企业”相关,但这部分效果很好)

例外:

    abr 27, 2016 11:11:58 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1400, SQLState: 23000
abr 27, 2016 11:11:58 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-01400: no se puede realizar una inserción NULL en ("WSPUSER"."TM_EMPLEADOS"."ID_CAT")

abr 27, 2016 11:11:58 AM org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release
INFO: HHH000010: On release of batch it still contained JDBC statements
Error org.hibernate.exception.ConstraintViolationException: could not execute statement
Exception in thread "main" org.hibernate.TransactionException: Transaction not successfully started
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:172)
at tws.hibernate.dao.GenericDAO.endTransaction(GenericDAO.java:59)
at tws.hibernate.dao.GenericDAO.insert(GenericDAO.java:88)
at TwsTestRunner.insertarEmpleado(TwsTestRunner.java:289)
at TwsTestRunner.main(TwsTestRunner.java:27)

实体“员工”:

@Entity
@Table(name = "TM_EMPLEADOS")
public class TmEmpleados implements java.io.Serializable {

    private TmEmpleadosId id;
    private TmEmpresas tmEmpresas;
    private TmCategoria tmCategoria;
    private String nombre;

    public TmEmpleados() {
    }

    public TmEmpleados(TmEmpleadosId id,TmEmpresas tmEmpresas, TmCategoria tmCategoria,String nombre) {
        this.id = id;
        this.tmEmpresas = tmEmpresas;
        this.tmCategoria = tmCategoria;
        this.nombre = nombre;
    }

    @EmbeddedId
    @AttributeOverrides({
            @AttributeOverride(name = "idEmple", column = @Column(name = "ID_EMPLE", nullable = false, length = 25)),
            @AttributeOverride(name = "mand", column = @Column(name = "MAND", nullable = false, length = 3)),
            @AttributeOverride(name = "idEmp", column = @Column(name = "ID_EMP", nullable = false, length = 6)) })
    public TmEmpleadosId getId() {
        return this.id;
    }

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

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
            @JoinColumn(name = "ID_CAT", referencedColumnName = "ID_CAT", nullable = false, insertable = false, updatable = false),
            @JoinColumn(name = "ID_EMP", referencedColumnName = "ID_EMP", nullable = false, insertable = false, updatable = false),
            @JoinColumn(name = "MAND", referencedColumnName = "MAND", nullable = false, insertable = false, updatable = false) })
    public TmCategoria getTmCategoria() {
        return this.tmCategoria;
    }

    public void setTmCategoria(TmCategoria tmCategoria) {
        this.tmCategoria = tmCategoria;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
            @JoinColumn(name = "ID_EMP", referencedColumnName = "ID_EMP", nullable = false, insertable = false, updatable = false),
            @JoinColumn(name = "MAND", referencedColumnName = "MAND", nullable = false, insertable = false, updatable = false) })
    public TmEmpresas getTmEmpresas() {
        return this.tmEmpresas;
    }

    @Column(name = "NOMBRE", nullable = false, length = 50)
    public String getNombre() {
        return this.nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
}

实体“类别”:

@Entity
@Table(name = "TM_CATEGORIA")
public class TmCategoria implements java.io.Serializable {

    private TmCategoriaId id;
    private String descripcion;
    private Set<TmEmpleados> tmEmpleadoses = new HashSet<TmEmpleados>(0);

    public TmCategoria() {
    }

    public TmCategoria(TmCategoriaId id, String descripcion) {
        this.id = id;
        this.descripcion = descripcion;
    }

    public TmCategoria(TmCategoriaId id, String descripcion,Set<TmEmpleados> tmEmpleadoses) {
        this.id = id;
        this.descripcion = descripcion;
        this.tmEmpleadoses = tmEmpleadoses;
    }

    @EmbeddedId
    @AttributeOverrides({
            @AttributeOverride(name = "idCat", column = @Column(name = "ID_CAT", nullable = false, length = 3)),
            @AttributeOverride(name = "idEmp", column = @Column(name = "ID_EMP", nullable = false, length = 6)),
            @AttributeOverride(name = "mand", column = @Column(name = "MAND", nullable = false, length = 3)) })
    public TmCategoriaId getId() {
        return this.id;
    }

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

    @Column(name = "DESCRIPCION", nullable = false, length = 50)
    public String getDescripcion() {
        return this.descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    @OneToMany(fetch = FetchType.LAZY, targetEntity = TmEmpleados.class, mappedBy = "tmCategoria")
    public Set<TmEmpleados> getTmEmpleadoses() {
        return this.tmEmpleadoses;
    }

    public void setTmEmpleadoses(Set<TmEmpleados> tmEmpleadoses) {
        this.tmEmpleadoses = tmEmpleadoses;
    }

}

我编辑了 hibernate 配置以显示 sql,控制台显示了以下内容:

abr 28, 2016 10:55:39 AM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.1.3.Final
        Hibernate: select tmcategori_.ID_CAT, tmcategori_.ID_EMP, tmcategori_.MAND, tmcategori_.DESCRIPCION as DESCRIPCION4_6_ from WSPUSER.TM_CATEGORIA tmcategori_ where tmcategori_.ID_CAT=? and tmcategori_.ID_EMP=? and tmcategori_.MAND=? 
    Hibernate: select tmempresas_.ID_EMP, tmempresas_.MAND, tmempresas_.DESCRIPCION as DESCRIPCION5_25_ from WSPUSER.TM_EMPRESAS tmempresas_ where tmempresas_.ID_EMP=? and tmempresas_.MAND=?
    Hibernate: insert into WSPUSER.TM_EMPLEADOS ( NOMBRE, ID_EMP, ID_EMPLE, MAND) values (?, ?, ?, ?)
abr 28, 2016 10:55:40 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1400, SQLState: 23000
abr 28, 2016 10:55:40 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-01400: no se puede realizar una inserción NULL en ("WSPUSER"."TM_EMPLEADOS"."ID_CAT")

abr 28, 2016 10:55:40 AM org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release
INFO: HHH000010: On release of batch it still contained JDBC statements
Exception in thread "main" org.hibernate.TransactionException: Transaction not successfully started
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:172)
    at tws.hibernate.dao.GenericDAO.endTransaction(GenericDAO.java:59)
    at tws.hibernate.dao.GenericDAO.insert(GenericDAO.java:88)

就我而言,解决方案是删除实体中的 insertable="false"、updatable="false" 。

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

ORA-01400: 无法将 null 插入 (TABLE.COLUMN)(休眠) 的相关文章

随机推荐

  • 如何使用 redux 从深度嵌套的子组件调用父组件中的函数

    class Parent extends React Component constructor props super props this clicked this clicked bind this getChildrenValues
  • 如何使用powershell从网络读取XML文件

    当我使用 URL 连接到 HP ILO 时 http ilo ip xmldata item 全部 http ilo ip xmldata item All它返回以下格式的 XML 文件
  • 有没有办法从 AIFF 文件中删除 IDV 标签?

    我正在为在 Ubuntu 服务器上运行的 Rails 应用程序开发后端任务系统 在将上传的 AIFF 文件转换为 FLAC 之前 我需要从中删除所有可能存在的标签 我怎样才能做到这一点 TagLib Ruby 目前尚未涵盖 AIFF 是否有
  • 如何在 flutter 中获取我的 .db 文件或文件路径?

    我已经在名为 cities db 的文件中恢复了一些信息 并将其放在项目路径 assets 中 你能告诉我如何获取它吗 安装应用程序后 我可以在路径 data data pkgName code cache xxx xxx build fl
  • ASP.Net MVC:IAuthorizationFilter/Attribute 首选登录安全检查?

    IAuthorizationFilter 与属性相结合是在控制器运行进程之前检查用户是否登录的首选方法吗 由于我是 MVC 新手 我一直在尝试找出如何处理在 WebForms 中完成的情况 我昨天遇到的问题是根据是否登录来检查用户是否能够查
  • Xslt 组父/子

    我在从 xml xslt 转换中获取以下结果时遇到问题
  • 如何使用请求来衡量下载速度和进度?

    我在用requests下载文件 但对于大文件 我需要每次检查磁盘上文件的大小 因为我无法以百分比显示进度 而且我还想知道下载速度 我该怎么做呢 这是我的代码 import requests import sys import time im
  • OpenCL:SIMT执行模型的基本问题

    SIMT 架构的一些概念和设计我仍然不清楚 根据我所看到和阅读的内容 不同的代码路径和 if 一起是一个相当糟糕的主意 因为许多线程可能会同步执行 那么这究竟意味着什么呢 怎么样 kernel void foo int flag if fl
  • 如何逐行读取文本区域 HTML 标记

    我有一个文本区域 其中每行都包含整数值 如下所示 1234 4321 123445 我想检查用户是否确实输入了有效值 而不是一些有趣的值 如下所示 1234 987l 为此 我需要逐行读取文本区域并验证它 如何使用 javascript 逐
  • Flutter Android 警报管理器不工作

    我已经安装了Android 闹钟管理器 https pub dartlang org packages android alarm manager按照链接中的说明将插件添加到我的 Flutter v1 0 0 应用程序中 但是当我尝试使用A
  • 无法在ubuntu v-20.04.1中安装nodejs

    我正在尝试使用此命令安装 nodejs 版本 14 15 4 apt install nodejs 14 15 4 但我收到这个错误 E 找不到 nodejs 的版本 14 15 4 我在这个命令中犯了什么错误 或者有什么更好的安装方法吗
  • 如何修复 Angular 6 中文件上传时出现的 415 不支持的媒体类型

    我负责 Net Core Web Api 和 Angular 应用程序 我创建了一个控制器 它将图像链接到数据库中的项目 HttpPut Action id public async Task
  • 如何对UDP协议进行拥塞控制?

    我有一个自定义的 UDP 协议 具有多个发送器 接收器 旨在尽可能快地发送大文件 它是基于客户端 服务器的 如何检测 LAN 上的拥塞情况以降低 UDP 数据包的发送速率 编辑 请不要评论UDP的使用是否合适 该协议使用 UDP 但在数据包
  • Java 中的 DI 没有注释?

    有没有什么方法 现有框架 可以在 Java 中配置 DI 而不必向 不属于 的类添加注释 在我的研究中 看起来要完成构造函数注入 我们需要向构造函数添加一些注释 如下所示 Inject or Autowired for Spring Boo
  • 无法对“XMLHttpRequest”执行“发送”

    我正在开发一个使用ajax 的Cordova 应用程序 我的问题是 在调试中 应用程序正在运行 但是当我构建一个版本时 我收到了错误 readyState 0 status 0 statusText NetworkError Failed
  • 如何使 type="number" 只为正数

    目前我有以下代码
  • 在 TeamCity 构建步骤中获取构建作业 URL

    我有一个 Microsoft Teams Webhook 当 TeamCity 构建失败时它会提醒我 我想知道如何获取当前 TeamCity 版本的 URL 以便可以将此信息传递到我的 webhook 仅使用手头的参数 您就可以将 uri
  • 如何使用 Ajax 和 Jquery 从 PHP 数据库中提取信息,并使用该信息填充元素?

    我正在调整一个网站 以便员工更轻松地编辑产品 现在 必须有人登录数据库并更改价格 然后必须有人更改网站本身的物理 html 因此 我正在编写代码 从数据库中提取所有产品 并将它们显示在可以编辑的页面上 我认为用 Ajax 来做所有事情都是最
  • 阻止 Word 2010 保存 o:gfxdata base64 或 uuencoded VML?

    我正在处理包含多个绘图画布的 docx 文件 其中插入了图像以及在 Word 2010 中绘制的一些线条和箭头 我使用的是没有兼容模式的 2010 格式 Word 插入一个o gfxdata属性到每个v shape and v group元
  • ORA-01400: 无法将 null 插入 (TABLE.COLUMN)(休眠)

    我正在使用 hibernate 4 3 oracle 11 当我想插入一个员工时 它与类别有一对多的关系 一个类别有很多员工 首先我将一个类别插入数据库 然后我尝试将一个员工插入数据库并得到一个异常 实体的代码是由hibernate生成的