私は Play フレームワークと yml 表記が初めてで、Hibernate の基本だけを知っています。.yml ファイルを使用していくつかのテスト データを設定しようとしています。同じコンペティション オブジェクトを参照する複数の Question オブジェクトと ActiveCompetition オブジェクトを定義しようとしています。私の .yml ファイルは次のようになります (関係ないと思われるものは削除しました)。
ActiveCompetition(1): &myactivecompetition
activeCompetition: &mycompetition
name: Name of the competition
Question(11):
title: Title 1
competition: *mycompetition
Question(12):
title: Title 2
competition: *mycompetition
Question(13):
title: Title 3
competition: *mycompetition
私は動作しますが、Hibernate は *mycompetition を 4 回保存しているようです。
Java Bean では、javax.persistence の属性は次のように設定されます。
@Entity
@Transactional
public class ActiveCompetition extends Model {
@Required
@OneToOne(cascade= CascadeType.ALL)
private Competition activeCompetition;
}
@Entity
@Transactional
public class Question extends Model {
...
@Required
@OneToOne(cascade= CascadeType.ALL)
private Competition competition;
}
*mycompetition をデータベースに一度だけ保存する必要があることを Hibernate に理解させるにはどうすればよいですか? .yml ファイルにデータベース ID を書き込む必要がありますか? もしそうなら、どうすればいいですか?たとえば、「id: 99」を activeCompetition の下に追加しようとしましたが、役に立ちません。