私のアプリケーションでは、PostgreSQLでStringデータJPAを使用しています。私のアプリケーションのすべてのエンティティについて、純粋にデータベース側でIDを生成する方法を探しています。SpringデータJPAはデータベース側のIDを生成する前に作成する
ので、例えば、ここに私の現在の作業バージョン:
@Entity
@Table(name = "permissions")
public class PermissionEntity {
@Id
@SequenceGenerator(name="permSeq", sequenceName="perm_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="permSeq")
private Short id;
...........
}
私は同じデータベースで動作するアプリケーションの複数のインスタンスを、持っていますので、私は、競合を避けるためにallocationSize = 1
を使用しています。
この場合、permission
を作成する前に、アプリケーションはデータベースperm_id_seq
シーケンスに次の値を受け取るよう要求します。私はid
を純粋にデータベース側に作成したいと考えています(jdbc template
の場合のように)。私はid
= nextval('perm_id_seq'::regclass)
のデフォルト値を設定し、自分のコードを修正することを行うために:私は、エンティティを保存しようとしているとき
@Entity
@Table(name = "permissions")
public class PermissionEntity {
@Id
private Short id;
...........
}
することは今では例外をスロー:
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()
明らかである理由私のために。しかし、誰かが私に言いたいことがありますが、私が望むようにデータベース側にid
を生成することは可能ですか?
はどうもありがとうございました!それは正常に動作します –