作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个实体 CheckpointAnswer.java:
@Entity
public class CheckpointAnswer extends Model {
@Id
public Long id;
@Column(length=160,nullable=false)
public String answer;
@ManyToOne
public Checkpoint checkpoint;
public CheckpointAnswer(String answer, Checkpoint checkpoint) {
this.answer = answer;
this.checkpoint = checkpoint;
}
public static Model.Finder<Long, CheckpointAnswer> find =
new Finder<Long, CheckpointAnswer>(Long.class, CheckpointAnswer.class);
}
和 Checkpoint.java:
@Entity
public class Checkpoint extends Model {
@Id
public Long id;
@Column(length=80,nullable=false)
public String name;
@Column(nullable=false)
public double longitude;
@Column(nullable=false)
public double latitude;
@Column(nullable=false)
public int points;
@Column(length=160,nullable=false)
public String message;
@OneToMany
public List<CheckpointAnswer> possibleAnswers = new ArrayList<CheckpointAnswer>();
@ManyToOne
public Scenario scenario;
public Checkpoint(String name, double longitude, double latitude, int points, String message, List<String> answers, Scenario scenario) {
this.name = name;
this.longitude = longitude;
this.latitude = latitude;
this.points = points;
this.message = message;
this.scenario = scenario;
for(String answer: answers) {
CheckpointAnswer ca = new CheckpointAnswer(answer, this);
ca.save();
possibleAnswers.add(ca);
}
}
public static Model.Finder<Long, Checkpoint> find =
new Finder<Long, Checkpoint>(Long.class, Checkpoint.class);
public void addPossibleAnswer(String answer) {
CheckpointAnswer checkpointAnswer = new CheckpointAnswer(answer, this);
checkpointAnswer.save();
this.possibleAnswers.add(checkpointAnswer);
this.update();
}
public static List<Checkpoint> findAssignedTo(Long scenario) {
return find.where()
.eq("scenario.id", scenario)
.findList();
}
}
如何创建具有一些 CheckpointAnswer
对象的 Checkpoint
对象?如果没有 CheckpointAnswer
,Checkpoint
就无法存在,反之亦然。
我尝试了您在代码中看到的方法,但失败了。我有以下单元测试:
@Test
public void createAndRetrieveCheckpoint() {
new User("bob@gmail.com", "Bob", "secret", "000000000", USER_PRIVILEGE.regular).save();
Scenario scenario = Scenario.create("Scenario 1", false, null, "bob@gmail.com");
List<String> answers = new ArrayList<String>();
answers.add("test answer 1");
new Checkpoint("test checkpoint", 21.456, 10.2, 10, "Test question for the user", answers, scenario).save();
List<Checkpoint> checkpoints = Checkpoint.find.all();
assertNotNull(checkpoints);
assertEquals(1, checkpoints.size());
assertNotNull(checkpoints.get(0).possibleAnswers);
assertEquals(1, checkpoints.get(0).possibleAnswers);
}
结果:
[error] Test models.ModelsTest.createAndRetrieveCheckpoint failed: expected:<1> but was:<BeanList deferred >
最佳答案
假设 assertEquals(1, checkpoints.get(0).possibleAnswers);
失败,您可能需要:
assertEquals(1, checkpoints.get(0).possibleAnswers.size());
同样不相关的是,您不必将 CheckpointAnswer
保存在 Checkpoint
构造函数或 addPossibleAnswers
中。当您保存 Checkpoint
时,您的 CheckpointAnswers
应该会被保留。这正是我们使用 ORM 的原因。以下是有关 cascades 的一些信息.
关于java - 如何创建两个同时互相引用的Ebean实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20654638/
我遇到的问题不是紧急情况,但我不知道该怎么做。我有两个 aspx 网络表单页面。每个都有一个下拉列表。两者都由来自 sql server 的相同数据源填充。问题是,如果我在第 1 页选择一个值,然后转
我正在使用 OpenvSwitch-2.5.2 在两个虚拟机上设置第 2 层网络,如上图所示。 在阅读了 ovs 官方教程和其他一些文章后,我在每个虚拟机上尝试了以下命令: # on vm1 ip l
我是一名优秀的程序员,十分优秀!