Spring 3でHibernate 4.1.0.Finalを使用しています
私はエンティティクラスに次のものを持っています
@Id
@Column(name = "PROJECT_NO")
@GeneratedValue(strategy=GenerationType.TABLE)
private String projectNumber;
データベース トリガーを使用してテーブルの主キーを設定することはできますか? または、これには CustomGenerator を使用する必要がありますか?
上記を試したところ、次の例外があります
org.hibernate.id.IdentifierGenerationException: Unknown integral data type
for ids : java.lang.String
データベース トリガーにはシーケンスがありません。使用しています
SELECT NVL (MAX (project_no), 0) + 1 FROM projects
編集 1
@GeneratedValue(generator="trig")
@GenericGenerator(name="trig", strategy="select",
parameters=@Parameter(name="key", value="projectNo"))
上記は次の例外をスローします
Hibernate: select PROJECT_NO from PROJECTS where PROJECT_NO =?
java.lang.NullPointerException
exception in save null
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValue(AbstractEntityTuplizer.java:645)
at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValue(AbstractEntityPersister.java:4268)
at org.hibernate.id.SelectGenerator$SelectGeneratorDelegate.bindParameters(SelectGenerator.java:138)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:84)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2764)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3275)
at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)