我从播放框架开始并遇到以下问题。在框架中使用外键时发生框架:[IllegalStateException:No value]
情况:我的应用程序有两个表,培训师和培训(1:n)。
我的模型: Trainer.java
@Entity
public class Trainer extends Model {
@Id
public Long id;
@Constraints.Required
public String trainerShortcut;
@Constraints.Required
public String firstName;
@Constraints.Required
public String lastName;
@Constraints.Required
public String email;
@OneToMany(mappedBy="owner", cascade=CascadeType.ALL)
public List<Training> trainings;
...
Training.java
@Entity
public class Training extends Model {
@Id
public Long id;
public String shortcut;
public String name;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="owner_id")
public Trainer owner;
public String description;
...
我也产生在Eclipse的getter和setter。
我的控制器:
public static Result addTraining() {
Training training = Form.form(Training.class).bindFromRequest().get();
training.save();
return ok();
}
的情况:我有添加训练一个简单的形式,这种形式包括“所有者”输入包含一个教练ID。
如果我使用Eclipse生成二传手“setowner”,我得到下面的执行异常(尽管有与数据库中给出的ID教练):
[IllegalStateException异常:无值]
线
培训培训= Form.form(Training.class).bindFromRequest()得到()。 被引用为
如果我删除了Eclipse生成的setter,则训练表中的“owner_id”字段之后为NULL。
我在做什么错?
非常感谢
我解决了也只是在不久前由“主人”到“所有者重命名表单输入.id“,但你的解决方案也适用! 我只是不得不使用“Ebean.find(Trainer.class,input)”而不是Trainer.find.byId,这是因为使用Ebean,我猜? – user844513 2014-10-19 11:33:41