当前位置: 首页 > 知识库问答 >
问题:

数据库持久期间的hibernate嵌套异常

柏正平
2023-03-14

在插入记录数据库过程中,我正在与以下问题作斗争。

2018-08-12 16:06:26.874警告5482---[nio-8080-exec-2]O.H.Engine.jdbc.spi.sqlexceptionHelper:SQL错误:1364,SQLState:HY000 2018-08-12 16:06:26.875错误5482--[nio-8080-exec-2]O.H.Engine.jdbc.spi.sqlexceptionHelper:字段“country_id”没有默认值查询是:插入bi_person(additional_info,gender_id,last_name,name)值(?,?,?,?),参数['Java嵌套异常为org.springframework.orm.jpa.jpasystemexception:无法执行语句;html" target="_blank">嵌套异常为org.hibernate.exception.GenericJDBCException:could not execute statement](根本原因

查询异常:字段“country_id”没有默认值查询为:insert INTERBI_PERSON(additional_info,gender_id,last_name,name)值(?,?,?,?),参数['Java Master',48,'ww','john']*

//Coutry:

@Table(name = "bi_country")
@Entity
public class Country {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_country")
    private Integer id;

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

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name="country_book", joinColumns=@JoinColumn(name="id_country"), inverseJoinColumns=@JoinColumn(name="id_person"))
    private Set<Person> persons;

//性别:

@Table(name = "bi_gender")
@Entity
public class Gender {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_gender")
    private Integer id;

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

//人

@Table(name = "bi_person")
@Entity
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_person")
    private Integer id;

    @Column(name = "name")
    private String name;
    @Column(name = "last_name")
    private String lastName;
    @Column(name = "additional_info")
    private String additionalInfo;


    @ManyToOne
    private Gender gender;

    @ManyToMany(cascade=CascadeType.ALL)
    private Set<Country> countries;

共有1个答案

宋健柏
2023-03-14

您只需仔细阅读错误消息即可。上面写着:

字段“country_id”没有默认值查询为:insert into bi_person(additional_info,gender_id,last_name,name)...

因此,您的bi_person表有一个名为country_id的字段,它没有任何默认值。当然,Hibernate不会在该字段中插入任何内容,因为它在实体Person中没有任何这样的字段。所以你得到了这个例外。

 类似资料:
  • 我正在尝试将嵌入式数据库derby与spring框架结合使用。我可以插入数据并读取它。除了数据库没有持久化之外,一切都很好。当我关闭应用程序并再次运行时,数据不存在。我猜数据库是再次创建的,但不知道为什么。 我的代码: 和Spring的输出日志是 create-db.sql内容是 解决方案:接受的答案指向正确的方向,但误差为db;create=true无法启动。然后,我查看了Netbeans ID

  • Im使用spring 3.0.7、JUnit 4.11和DBUnit 2.4.9。我试图在保存未指定多对一关系(设置为null)的实体时测试trowing异常。以下是实体: 我创建了以下测试: AbstractDatabaseTest扩展了AbstractTransactionalJUnit4SpringContextTests。 试验方法为: 但是当我做测试的时候 当我像这样将预期异常更改为Da

  • 问题内容: 我在apache和mod_wsgi和PostgreSQL中使用django(都在同一主机上),并且我需要处理很多简单的动态页面请求(每秒数百个)。我面临的问题是,瓶颈是django没有持久的数据库连接,并在每个请求上重新连接(大约需要5毫秒)。在进行基准测试时,我得到了持久连接,我可以处理近500 r / s,而没有连接时,我只能得到50 r / s。 有人有什么建议吗?如何修改Dja

  • 目的 配置 NFS 共享为 OpenShift 节点提供存储,并且配置 OpenShift 持久卷以绑定至数据库 Pod。 环境 openshift v3.11.16/kubernetes v1.11.0 步骤 配置 NFS 共享持久卷1. 登录到 NFS 服务器 # ssh nfs.example.com2. 创建 config-nfs.sh 脚本,内容如下 #!/usr/bin/sh exp

  • 我有一个简单的JPA存储库,看起来如下所示: 和两个有一个单子映射的类,如下所示: . 现在,我知道我可以很容易地编辑和持久化一个像这样的用户实例: 但是,在没有指向实例的指针的上下文中,如何持久化实例,f.I.: 我可以只调用吗? 我是否需要自动连接另一个存储库()并在其上调用.save()?

  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我