hibernateアノテーションを使用して、同じフィールドに自動インクリメントとユーザー設定IDを設定できますか?
EG:ユーザーがIDを入力する場合は、指定されたIDを使用します
-また-
ユーザーが何も入力しなかった場合、HibernateはID自体を作成する必要があります。
どんな提案にも感謝します。
hibernateアノテーションを使用して、同じフィールドに自動インクリメントとユーザー設定IDを設定できますか?
EG:ユーザーがIDを入力する場合は、指定されたIDを使用します
-また-
ユーザーが何も入力しなかった場合、HibernateはID自体を作成する必要があります。
どんな提案にも感謝します。
私はあなたがこれを探していると思います
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
Hibernate にバインドされているため、カスタム id ジェネレーターを使用できます。ユーザーから提供された場合に id を取得する次の id フィールドがあるとします。それ以外の場合は、自動生成する必要があります。
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY, generator="CustomIdGenerator")
@GenericGenerator(name="CustomIdGenerator ",
strategy="xx.yy.zz.CustomIdGenerator"
)
private Integer id;
これは、指定されていない場合に id を生成するカスタム ジェネレーターです。
import org.hibernate.id.IdentityGenerator;
...
public class CustomIdGenerator extends IdentityGenerator {
@Override
public Serializable generate(SessionImplementor session, Object obj) throws HibernateException {
if ((((yourEntity) obj).getId()) == null) {
Serializable id = super.generate(session, obj) ;
return id;
} else {
return ((yourEntity) obj).getId();
}
}