生成的值异常java jpa

时间:2014-04-16 08:44:15

标签: java mysql spring hibernate jpa

我使用Spring jpa和Mysql。

我正在尝试实现以下解决方案,以绕过生成的id字段:Bypass GeneratedValue in Hibernate (merge data not in db?)

问题是,当id为null并且应该生成时,我得到:" field' id'没有默认值"

我的实体:

    @Entity
public class RegistrationDetails{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "IdOrGenerated")
    @GenericGenerator(name = "IdOrGenerated", strategy = "com.xxx.common.UseIdOrGenerate")
    @Column(name = "ID", nullable = false)
    private Long id;

    @Column(nullable = false)
    private String firstName;
}

我的发电机:

    public class UseIdOrGenerate extends IdentityGenerator {

        @Override
        public Serializable generate(SessionImplementor session, Object obj) throws HibernateException {

        if (obj == null)
            throw new HibernateException(
                         new NullPointerException());

        if ((((RegistrationDetails) obj).getId()) == null) {
            Serializable id = super.generate(
                             session,
                             obj);
            return id;
        }
        else {
     return ((RegistrationDetails) obj).getId();

        }
        }

}

从一些对话中我认为有关自动增量的内容,但我无法将其添加到MySql中。

编辑: 我的表是在tomcat服务器启动时自动生成的。问题是它没有将id字段设置为自动增量。这是否有hibernate注释?

1 个答案:

答案 0 :(得分:0)

请参阅链接Hibernate Auto Increment ID

您可以使用GenerationType.AUTO进行创建。 有关详细信息,请参阅上面的链接