0

GenerationType.SEQUENCE を使用して生成された値である 1 つのフィールドを持つ Java の DO があり、このオブジェクトの新しいインスタンスを作成したい場合、フィールドは自動的に入力されますか? いえ

public class LogEntry {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="ENTITY_SEQ")
@SequenceGenerator(name = "ENTITY_SEQ")
@Column(name = "migration_batch_id", nullable = false, updatable = false, length = 38)
private long uniqueId;

//Bunch of other fields
}

LogEntry クラスのインスタンスを作成する場合は、他のフィールドを設定してから、インスタンスをデータベースに保存します。uniqueId フィールドは自動的に設定されますか?

4

3 に答える 3

0

解決策は、sequence_name をシーケンス ジェネレーター アノテーションにも提供することであることがわかりました

于 2013-08-09T18:07:57.947 に答える
0

はい、自動的に設定されますが、シーケンスを生成タイプとして使用しており、シーケンスはデータベース側で作成されるため、このオブジェクトがエントリとして DB に保存されるまで、生成されたシーケンス値は取得されません。私がしようとしている点は、オブジェクトをフラッシュする必要があるということです。hibernate がクエリを起動してこのオブジェクトの挿入を行う限り、この ID が設定されます。

于 2013-06-24T21:40:38.930 に答える