我有一个帖子类,它的工作类型,但有一个问题:主键不增加。JPA主键值始终为0
@Entity
@Table(name="posts")
public class Post extends GenericModel{
@Id
@Column(name="post_id")
public int id;
@Column(name="post_situation")
public String situation;
@Column(name="post_date")
public Date date;
@Column(name="post_userid")
public int userid;
@OneToMany(mappedBy="post", cascade=CascadeType.ALL)
public List<Block> blocks;
public Post addBlock(String content, int position){
Block b = new Block(this, content, position);
b.save();
this.blocks.add(b);
this.save();
return this;
}
public Post(String situation, Date date){
this.situation = situation;
this.date = date;
this.userid = 2;
}
}
当我把它叫做第一次在一个空表,它工作正常,但第二次,我得到PersistenceException occured : org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
的POST_ID列始终为0。任何想法如何解决这一问题?我有。安迪@Id注释..
这是我在我的控制器:
Post p = new Post("Midden in het middenoosten.", new Date()).save();
任何想法什么导致这个问题呢?
当它在查询中保持打开状态时,mysql不应该能够自己生成主键吗?有没有办法让JPA在保存对象时忽略它,只用它来阅读? – networkprofile 2011-06-07 01:31:58
我还没有看过你的更新答案。我尝试了没有@GeneratedValue参数,现在它告诉我'java.sql.SQLException:字段'post_id'没有默认值' – networkprofile 2011-06-07 01:36:39
是的,我的SQL可以做到这一点。您需要在创建表时指定该列。 – sudmong 2011-06-07 01:36:59