3

hibernateアノテーションを使用して、同じフィールドに自動インクリメントとユーザー設定IDを設定できますか?

EG:ユーザーがIDを入力する場合は、指定されたIDを使用します

-また-

ユーザーが何も入力しなかった場合、HibernateはID自体を作成する必要があります。

どんな提案にも感謝します。

4

2 に答える 2

1

私はあなたがこれを探していると思います

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
于 2013-03-18T08:18:08.113 に答える
1

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();

    }
}
于 2013-03-18T08:26:30.600 に答える