3

Hibernateの外部IDジェネレーターに相当するJPAは何ですか?

<id column="PERSON_ID" name="id" type="java.lang.Long">
   <generator class="foreign">
      <param name="property">person</param>
   </generator>
</id>
4

2 に答える 2

6

AFAIK、JPA仕様では、外部IDジェネレーターは標準化されていません。このインスタンスを保存する前に、プログラムでPK値を正しく設定する必要があります。

Hibernateに関しては、外部IDジェネレーターを有効にするための拡張アノテーションがあります。よろしければ、それを使用することを選択できます。

  @Id
  @GeneratedValue(generator = "myForeignGenerator")
  @org.hibernate.annotations.GenericGenerator(
        name = "myForeignGenerator",
        strategy = "foreign",
        parameters = @Parameter(name = "property", value = "person")
  )
  @Column(name = "PERSON_ID")
  private Long id;
于 2012-04-10T14:41:30.123 に答える
0

JPA 2.0の価値については、外部キーのインポートに使用できる@MappedByアノテーションを追加します。クリスチャンの例から始めて、ケンチャンの例から簡単に退屈:

@Id
@Column
private Long personId;

@ManyToOne
@JoinColumn(name = "personId")
@MapsId
private Person person;

この質問はかなり前からのものだと知っていますが、同じ問題を解決するときに偶然見つけて掘り下げた@MappedByので、後でこれに遭遇した人のために追加したいと思いました。

于 2017-11-17T14:31:32.480 に答える