いくつかの前提条件:永続化、Hibernate、Springデータの前に生成されたエンティティIDを取得する
Oracle DBシーケンスジェネレータを使用していません。その代わりに、私はHibernateシーケンスジェネレータe.xに依存します。私が欲しいもの
@Entity
@Table(name = "JPA_ENTITY_A")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
public class JpaEntityA{
@Id
@Type(type = "uuid-binary")
@GeneratedValue(generator = "system-uuid")
private UUID id;
@Column(name="NAME_WITH_ID")
String nameWithGeneratedId;
}
はコラム「NAME_WITH_ID」に次の生成された値を保持することです:this.nameWithGeneratedId+this.id
は、次の操作を実行することが可能である:
public String getNameWithGeneratedId(){
return this.nameWithGeneratedId+this.id;//hope that the returned value will be persisted
}
それとも、取得することが可能です事前にエンティティをDBに生成されたIDに永続化する前に?はいの場合、どのように達成できますか? (下のコメントに基づいて行うことはできません)
Thxを事前に入力してください。
多くの他のJPAプロバイダは、 '@ PrePersist 'の間に生成された値を利用できるようにしているので、実際のINSERTの前にアクセスすることができます。明らかに、Hibernateはこれをしません。 JPAで発行されたこの問題を次の仕様の一部にするために参照してください。https://java.net/jira/browse/JPA_SPEC-133 –