hibernate 配置Oracle主鍵建置原則____Oracle

來源:互聯網
上載者:User
@Id@Column(name="[id]")@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="seqhilo")@SequenceGenerator(sequenceName="userInfo_sequence", name = "seqhilo",allocationSize=1)private long id;
sequenceName="userInfo_sequence"

制定Oracle中的產生序列

以下是有可能出現的問題

載:使用JPA產生實體類後,主鍵每次插入,數量按50遞增,資料庫:oracle,主鍵遞增方式:sequence 部落格分類: JAVA  

作者:ghl116

 

Java Persistence API 簡稱JPA,它是作為EJB3.0規範( )中的附加持久規範而被開發出來。Hibernate3也使用JPA Annotation來替代以前hbm設定檔,在新項目使用了一下,感覺非常方便。但這幾天出現了一個奇怪的問題。
@Entity()
@Table(name = "user_score_history")
public class UserScoreHistoryVO implements Serializable {
private int id;
private int userId;
private int scoreChange;
private int levelChange;
private String changeReason;
private String parameters;
private Timestamp createTime;

@Id
@SequenceGenerator(name="seq_user_score_history_id",sequenceName = "seq_user_score_history_id")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "seq_user_score_history_id")
public int getId() {
return id;
}
...
}
但是每次儲存新對象時都發現id都不對,與定義的sequence不一致,每一次都起始的id值都是50的倍數,而日誌裡看插入時也有調用sequence的sql語句。到網上查了一下,也沒有結果。鬱悶。看到一個對JPA的介紹
@SequenceGenerator如果使用 批註指定一個 SEQUENCE 類型的主鍵產生器,則可以使用 @SequenceGenerator 批註微調該主鍵產生器以:
更改分配大小以匹配應用程式要求或資料庫績效參數
更改初始值以匹配現有的資料模型(例如,如果基於已經為其分配或保留了一組主索引值的現有資料集構建)
使用現有資料模型中預定義的序列
列出了此批註的屬性。有關更多詳細資料,請參閱 。有關更多詳細資料,請參閱 。
表 1-42 @SequenceGenerator 屬性
屬性必需說明name


SequenceGenerator 的名稱必須匹配其 startegy 設定為 SEQUENCE 的 GeneratedValue 的名稱。
allocationSize


預設值: 50.
預設情況下,JPA 持久性提供者使用的分配大小為 50。
如果此分配大小與應用程式要求或資料庫績效參數不匹配,請將 allocationSize 設定為所需的 int 值。
initialValue


預設值: 0.
預設情況下,JPA 持久性提供者假設持久性提供者將所有主索引值的起始值設定為 0。
如果這與現有資料模型不匹配,請將 initialValue 設定為所需的 int 值。
sequenceName


預設值:JPA 持久性提供者分配它自己建立的序列名。
如果要使用事先存在或預定義的序列,請將 sequenceName 設定為所需的 String 名稱。

allocationSize預設值: 50。。。是不是這個,試著把allocationSize = 1加入@SequenceGenerator,果然就對了。
唉,這個世界連sun都不能相信了,還能相信誰啊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.