Java 旁路生成值
我正在尝试创建一个服装识别生成器。如果id为null,则生成else并给出值。我发现: 但我一直得到java.sql.SQLException:字段“id”没有默认值 我的实体:Java 旁路生成值,java,hibernate,Java,Hibernate,我正在尝试创建一个服装识别生成器。如果id为null,则生成else并给出值。我发现: 但我一直得到java.sql.SQLException:字段“id”没有默认值 我的实体: @Entity public class TestEntity extends AbstractEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "IdOrGenerated") @Gene
@Entity
public class TestEntity extends AbstractEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "IdOrGenerated")
@GenericGenerator(name = "IdOrGenerated", strategy = "com.xxx.service.UseIdOrGenerate")
protected Long id;
@Column(length = 64)
private String name;
public TestEntity(String name) {
super();
this.name = name;
}
public TestEntity(Long id, String name) {
super();
this.id = id;
this.name = name;
}
public TestEntity() {
super();
}
}
我的自定义生成器:
public class UseIdOrGenerate extends IdentityGenerator {
@Override
public Serializable generate(SessionImplementor session, Object object) throws HibernateException {
Serializable id = session.getEntityPersister(null, object).getClassMetadata().getIdentifier(object, session);
id = id != null ? id : super.generate(session, object);
return id;
}
}
返回未分配的变量/字段会导致错误。需要为字段
id
指定一个默认值,这与它是什么无关,只要它有一个默认值
protected Long id = new Long(0);
对于任何想寻找答案的人,你可以参考这个