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

字段“id_employeer”没有默认值

慕容康安
2023-03-14

我不明白为什么我应用程序会删除异常“字段'ID_Employeer'没有默认值”。

id_employeer是我的主键,当我试图将任何信息保存到我的数据库时,我得到了这个异常,但是,当我只是试图从DB读取信息时,它是正常的。

我读了关于StackOverflow的主题,但我仍然不明白我应用程序中的答案。我正在使用Hibernate5.2.11。

我的characterinfo.hbm.xml:

    <?xml version="1.0"?>

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="CharacterInfo" table="employees">
        <id name="Id" column="id_employeer">
            <generator class="native"/>
        </id>
        <property name="Login" column="employeer_login"/>



    </class>

</hibernate-mapping>

我的冬眠:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import java.util.List;


public class HibernateUtility {


    SessionFactory sessionFactory;

    public void saving(Object object){
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save( object);
        //session.save( new CharacterInfo().getLogin());
        session.getTransaction().commit();
        session.close();
    }

    public void reading(){
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        List result = session.createQuery("from CharacterInfo").list();
        for ( CharacterInfo characterInfo : (List<CharacterInfo>) result ) {
            System.out.println( "CharacterInfo (" + characterInfo.getLogin() + ") : " + characterInfo.getLogin() );
        }
        session.getTransaction().commit();
        session.close();
    }


    protected void setUp() throws Exception {

        final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure()
                .build();

        try {
            sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();


        } catch (Exception e) {
            StandardServiceRegistryBuilder.destroy(registry);
        }
    }




}

下一个CharacterInfo类

import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;


@Entity
@Table( name = "employees")
public class CharacterInfo {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "Id_employeer")
    private int id ;

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


    public CharacterInfo() {}

    public int getId() {
        return id;

    }

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


    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }



}

主类

public class main {


    public static void main(String args[]) throws Exception {
        HibernateUtility hibernateUtility = new HibernateUtility();
        CharacterInfo characterInfo = new CharacterInfo();
        characterInfo.setId(1);
        characterInfo.setLogin("PawJaw");
        hibernateUtility.setUp();
        hibernateUtility.saving(characterInfo);


    }
}

最后例外

共有1个答案

班言
2023-03-14

首先,如果您使用的是Hibernate注释,那么就不需要使用Hibernate XML映射文件。

您的错误可能是因为您的数据库模式。Id_employeer列不是自动递增的。

 类似资料:
  • 问题内容: 我面对的是Hibernate遇到的一个简单问题,但无法解决(无法访问的Hibernate论坛当然无济于事)。 我有一个简单的课程想继续学习,但是请继续学习: 持久化类的相关代码为: 实际的运行代码很简单: 我在注解中尝试了一些“策略”,但似乎不起作用。初始化也无济于事!(例如)。 谁能给我一些启示? 编辑2: 确认:不能解决问题 求助: 重新创建数据库解决了问题 问题答案: 有时,即使

  • 问题内容: 我收到一条错误消息: 每个人都可以帮助我吗?我的数据库字段不为空。但我想得到这个结果: 并且 两者都成功(在客户端中都是成功,但是在Java代码中是error,错误代码位于标题的顶部),而不是false;我的mysql jar是mysql-connector- java-5.0.8 问题答案: 该错误是不言自明的。您的列没有默认值。因此,在插入期间,mysql无法找出要在列中插入的内容

  • 问题内容: 我面临的问题是Hibernate的一个简单问题,但无法解决(无法访问的Hibernate论坛当然无济于事)。 我有一个简单的课程想继续学习,但是请继续学习: 持久化类的相关代码为: 实际的运行代码很简单: 我在注解中尝试了一些“策略”,但似乎不起作用。初始化也无济于事!(例如)。 谁能给我一些启示? 编辑2: 确认:不能解决问题 求助: 重新创建数据库解决了问题 问题答案: 有时,即使

  • 问题内容: 我的桌子看起来像 然后我有一个触发器来自动填充CREATED_BY字段 当我使用插入 该条目在表中进行,但我仍然收到错误消息 有没有一种方法可以抑制此错误,而又不使字段可为空并且不删除触发器?否则,我的hibernate状态将看到这些异常(即使已进行插入),然后应用程序将崩溃。 问题答案: 设置默认值(例如:empty ),触发器将始终更新该值。

  • 我的桌子看起来像 然后我有一个触发器来自动填充CREATED_BY字段 当我使用 表中有条目,但我仍然得到错误消息 有没有一种方法可以在不使字段为空和不移除触发器的情况下抑制此错误?否则,我的hibernate将看到这些异常(即使已经进行了插入),然后应用程序将崩溃。

  • 问题内容: 我刚刚从MAMP安装切换到本机Apache,MySql和PHP安装。我已经完成所有工作,但是我已经开始在新环境中使用Web应用程序,突然任何INSERT命令都会导致以下错误: SQLSTATE [HY000]:常规错误:1364字段“ display_name”没有默认值 看来我现在无法将字段留空。我正在使用MySql版本5.6.13 有没有办法在MySql中更改此设置? 问题答案: