エントリID()の番号を生成するストアドプロシージャがありますentry_id_seq
。次の設定では、コードはSQLで直接呼び出されるよりも比較的大きな数を生成します。
たとえば、次のコードはidの番号「11195215652」を生成します。しかし、実行するselect entry_id_seq.NEXTVAL nv from dual
と、はるかに小さい「32350910」が返されます。
@javax.persistence.SequenceGenerator(name = "seq",
sequenceName = "entry_id_seq")
public class SomeClassimplements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
@Column(name = "ID")
private Long id;
私は以下の提案を試しました
@javax.persistence.SequenceGenerator(name = "seq",
sequenceName = "entry_id_seq", allocationSize = 1, initialValue= 1)
しかし、それは私に次のエラーを与えます:
Caused by: org.hibernate.HibernateException: increment size cannot be less than 1
at org.hibernate.id.enhanced.OptimizerFactory$LegacyHiLoAlgorithmOptimizer.<init>(OptimizerFactory.java:336)
at org.hibernate.id.SequenceHiLoGenerator.configure(SequenceHiLoGenerator.java:64)
at org.hibernate.id.factory.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:110)