我在某个应用程序中有这个表,指定了一个生成器和Generationtype.AUTO,但每当我尝试持久化时,我从服务器收到错误,指出id没有默认值。 这是在jboss服务器AS7.x上运行,数据库引擎是mysql。
到目前为止,我还没有结论为什么会发生这种情况。有人可以帮忙吗?
@SequenceGenerator(name = "id", sequenceName = "some_set_seq", initialValue = 1, allocationSize = 1)
@Table(name = "some_set")
public class SomeSet implements Serializable {
private static final long serialVersionUID = 633453570945334348L;
private long id;
private String name;
private String description;
private List<SomeItem> items;
private List<SomeEntity> someEntities;
private Date lastModification;
public SomeSet() {}
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "id")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "description")
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@OneToMany(cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
@JoinColumn(name = "some_set_id")
@ForeignKey(name="FK_someItem_someSet")
public List<SomeItem> getItems() {
return items;
}
public void setItems(List<SomeItem> items) {
this.items = items;
}
@ManyToMany(mappedBy = "someSets", cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@ForeignKey(name="FK_someLink_someSet")
public List<SomeEntity> getEntities() {
return someEntities;
}
public void setEntities(List<SomeEntity> someEntities) {
this.someEntities = someEntities;
}
@EntityProperty(name = "lastmodificationdate")
@Column(name = "last_modification_date")
public Date getLastModification() {
return lastModification;
}
public void setLastModification(Date lastModification) {
this.lastModification = lastModification;
}
}
答案 0 :(得分:1)
这是非常普遍的例外和直接的例外。确保您的数据模型具有标记为特定列的默认值的属性。您的数据模型与域模型之间不匹配...请检查您的架构/表并相应地进行更改。
干杯!
答案 1 :(得分:0)
数据库是由一些单独实现的脚本创建的,而不是由hibernate创建的。 我们发现在该软件的某些其他版本中,该表具有为id而定义的自动增量,现在它已失败。
放回去使它工作正常。
答案 2 :(得分:0)
我遇到了同样的问题,发现表中的主键没有标记为自动增量。请将ID字段自动增加并解决您的问题。