我正在迈出 Play 的第一步!使用 Java 的框架(v2.1-rc1),现在我遇到了 ebean 的第一个问题。我有一个与其自身具有多对一关系的导航实体。当我尝试访问parentNavigation中的标题字段时,我收到以下错误:
[EntityNotFoundException: Bean has been deleted - lazy loading failed]
据我发现,仅当数据库中不存在父导航时才会出现该错误。在这种情况下我不应该收到一个空的导航对象吗?
导航实体:
package models;
import javax.persistence.*;
import play.db.ebean.*;
@Entity
public class Navigation extends Model {
@Id
public Long id;
@Column(name="c_title")
public String title;
@Column(name="id_parent")
public Long parentId;
@ManyToOne()
@JoinColumn(name="id_parent")
public Navigation parentNavigation;
public static Finder<Long,Navigation> find = new Finder<Long,Navigation>(
Long.class, Navigation.class
);
}
我在控制器中的操作:
public static Result index() {
Navigation navigation = Navigation.find.byId(2L); // this one doesn't work, but the entry with ID 30 does
return ok(views.html.app.index.render(navigation));
}
以及我的看法:
@(navigation: Navigation)
@main("Welcome to Play 2.0") {
This navigation: @navigation.title <br>
Parent: @navigation.parentNavigation.title
}
如果我理解正确的话,你有一个与它的行parent_id
列包含2
(例如),但没有带 ID 的行2
在表中。
如果是这样,那么出现异常是正常的。通过设置所有不存在的数据来清理您的数据parent_id
为NULL,并添加外键约束parent_id
专栏,让这种情况不再发生。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)