我使用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注释?