[英]Hibernate Annotations - id is not set correctly
我有一堆用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 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_sequence(我認為)。
問題:
注意:我正在使用Java 1.6,MSSQL2005,Hibernate3
嘗試使用相應的注釋指定SequenceGenerator:
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@SequenceGenerator(name = "myGen", sequenceName = "MY_SEQUENCE")
public Long getId()
{
return id;
}
為什么?
我不知道,關於某些“實際ID”的上一段沒有任何意義。 你能澄清一下嗎? 顯示TitleEntry
表的結構也可能會有所幫助。
反正
hibernate_sequence
是什么(在Hibernate網站上找不到合適的解釋)?
Hibernate使用的序列或表的默認名稱(請參見5.1.5。增強標識符生成器 )。 由於SQL Server不支持序列,因此我敢打賭。 您應該檢查生成的DDL以查找已完成的操作(並顯示相關部分)。
但是令我驚訝的是,Hibernate沒有默認使用IDENTITY
(您使用的是哪個版本的Hibernate?)。
我該如何解決?
我不知道您要解決的問題,但如果要完全控制,請不要使用AUTO
策略( IDENTITY
在SQL Server中很常見)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.