org.hibernate.AssertionFailure: null id in xxx entry (don't flush the Session after an except)解决方法

最近学习了一点Hibernate的东西,今天遇到一个莫名奇妙的问题。在我配置好表的注解和对应关系之后,当我想往数据库中插入数据时,报了下面的错误:

org.hibernate.AssertionFailure: null id in bean.Grade entry (don't flush the Session after an exception occurs)

下面放上我 Grade.java 这个类的代码

package bean;

import org.hibernate.annotations.GenericGenerator;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;


@Entity
@Table(name = "GRADE")
public class Grade {

    @Id
    @GenericGenerator(name = "gid", strategy = "native")
    @GeneratedValue(generator = "gid")
    private int gid;

    //班级名称
    private String name;

    //班级描述
    private String desc;

    @JoinColumn(name = "gid")
    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private Set<Stu> stus = new HashSet<>();


    public Grade() {
    }

    public Grade(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public int getGid() {
        return gid;
    }

    public void setGid(int gid) {
        this.gid = gid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public Set<Stu> getStus() {
        return stus;
    }

    public void setStus(Set<Stu> stus) {
        this.stus = stus;
    }
}

看了好多遍都没有找到问题,最终在一篇博客里面看到的下面这句话恍然大悟:

null id这个问题时,有可能是字段里用到了数据库的关键字了.(尤其注意这个describe)

对,我定义了一个字段 desc ,我想表达的意思是描述,结果和数据库的关键字冲突了,将 desc 字段改为其它单词就可以解决问题啦。
希望可以帮助到有需要的人。

参考链接:http://blog.csdn.net/Darkness_zero/article/details/21415909

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值