1

その戦略が実行された場合、Hib は単に id 設定を無視します。

それを回避して戦略を保存する方法はありますか?

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
public Long getId() {
     return id;
}

...

Account account = new Account();
account.setId(1000L);
account.setSmth(smth);
...
//Tried to do so, but tomcat hangs on this string. 
session.createSQLQuery("ALTER TABLE account AUTO_INCREMENT = " + account.getId() + ";").executeUpdate();
session.save(account);
...

スパシボ!

4

3 に答える 3

1

この戦略を使用して、必要に応じてIDが割り当てられたエンティティを保存できます。

@GeneratedValue(strategy="org.hibernate.id.Assigned")
public Long getId() {
    ...
}

唯一の欠点は、Hibernateが新規または既存のエンティティであるかどうかを認識する必要があるバージョンフィールドを含める必要があることです。

@Version
public Long getVersion() {
    ...
}
于 2013-03-04T19:12:29.450 に答える
1

以下のように GeneratedValue の注釈を削除するだけで、エンティティは割り当てられた id 値を使用します。それは私のウェブアプリで動作します。

@GeneratedValue(strategy = GenerationType.AUTO)
于 2013-03-05T01:24:31.087 に答える
0

注釈 @GeneratedValue を削除します。Hibernate は割り当てた識別子を使用します。以下の Hibernate ドキュメントからの説明を参照してください。

割り当てられた

save() が呼び出される前に、アプリケーションがオブジェクトに識別子を割り当てられるようにします。要素が指定されていない場合、これがデフォルトの戦略です。

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.htmlを参照してください

于 2015-03-26T08:48:39.657 に答える