2017-12-06 12 views
1

Postgres内の新しいエンティティを永続化すると、Springデータ(JPA/Hibernate)ベースのアプリケーションが負荷を増加させます。 org.postgresql.util.PSQLException:ERROR :Postgresによるユニーク制約 "hibernate_sequences_pkey"の例外に重複するキー値

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

私は、この戦略は、Postgresのための完璧なソリューションではないことを知っている、しかし、それが理由です:キー値を複製することは、次のようにIDの戦略が定義されている

ユニーク制約「hibernate_sequences_pkeyを」違反します上記の例外?

負荷は、複数のスレッドで並列に実行されているスプリッターを使用してApache Camelルートを使用して生成されます。

答えて

1

いくつかのテストの後、実際に問題がstrategy = GenerationType.TABLEによって引き起こされたようです。 strategy = GenerationType.SEQUENCEへの変更により、重複したキーを使用した上記の問題は解消されました。

@Id 
@SequenceGenerator(name = Consts.VEHICLE_ATTR_ID_SEQ, 
     sequenceName = Consts.VEHICLE_ATTR_ID_SEQ, 
     allocationSize = 1) 
@GeneratedValue(strategy = GenerationType.SEQUENCE, 
     generator = Consts.VEHICLE_ATTR_ID_SEQ) 
@Column(name = "ID", updatable = false) 
public Long getId() { 
    return id; 
} 
関連する問題