Java Hibernate批注-id设置不正确
我有一大堆用JPA注释如下的Java bean:Java Hibernate批注-id设置不正确,java,sql-server-2005,hibernate,jpa,Java,Sql Server 2005,Hibernate,Jpa,我有一大堆用JPA注释如下的Java bean: import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class TitleEntry extends Entry { private Long id; public
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class TitleEntry extends Entry {
private Long id;
public TitleEntry() { }
public TitleEntry(String code, String label) {
super(code, label);
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
protected void setId(Long id) {
this.id = id;
}
}
对于每个对象,id总是这样生成的,并且似乎工作正常
现在的问题是:
在Java中保存对象时:
dao.save(titleEntry);
bean的id属性设置为int值,该值与实际id不一致。
它对应于hibernate_序列(我想)
问题:
注意:我正在使用Java 1.6、MSSQL2005、Hibernate3尝试使用相应的注释指定SequenceGenerator:
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@SequenceGenerator(name = "myGen", sequenceName = "MY_SEQUENCE")
public Long getId()
{
return id;
}
为什么?
我不知道,前一段关于“真实身份”的内容没有任何意义。你能澄清一下吗?显示TitleEntry
表的结构也可能有所帮助
什么是hibernate\u序列(在hibernate网站上找不到合适的解释)
Hibernate使用的序列或表的默认名称(请参阅)。考虑到SQL Server不支持序列,我打赌是后者。您应该检查生成的DDL,以准确地找到所做的事情(并显示相关部分)
但令我惊讶的是,Hibernate没有默认设置为IDENTITY
(您使用的是什么版本的Hibernate?)
我怎样才能修好它
我不知道您想要修复什么,但如果您想要完全控制,请不要使用AUTO
策略(IDENTITY
在SQL Server中很常见)