我是 Play 框架和 yml 表示法的新手,只知道 Hibernate 的基础知识。我正在尝试使用 .yml 文件设置一些测试数据。我尝试定义几个 Question 对象和一个 ActiveCompetition 对象,它们引用同一个 Competition 对象。我的 .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;
}
如何让 Hibernate 理解 *mycompetition 应该只在数据库中存储一次?我应该在 .yml 文件上写数据库 ID 吗?如果是这样,我该怎么做?我已经尝试在 activeCompetition 下添加例如“id:99”,但它没有帮助。