我正在使用 Jboss AS 7、CDI、JPA 和捆绑的其他一些资源开发应用程序。
我的问题是:当我使用 maven-jboss-webapp-archetype 在 Eclipse 中创建一个项目时,它会生成一些文件,我一直在广泛研究并试图与之相处。问题是,有时我觉得自己是在使用 Hibernate 资源还是 JPA 资源有点困惑。
第二个问题:当我在同一个实体中使用多个 @OneToMany 关系时,我注意到两种行为:
a) 如果没有为 Fetch 指定 EAGER 类型,它会部署应用程序,但是当我尝试使用该列表时,它会给我带来 LazyInitializationException 错误,因此在这里进行了广泛讨论。
b) 当我在 @*ToMany 关系上为 FetchType 指定 Eager 时,它只是不部署应用程序。它给了我错误:无法实例化多个包。
这是有问题的代码段:
@OneToMany(cascade = CascadeType.ALL, mappedBy = "teamUser" , fetch = FetchType.EAGER)
private Collection<Users> usersCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "teamRanking" , fetch = FetchType.LAZY)
private Collection<Ranking> rankingCollection;
@NotNull
@OneToMany(cascade = CascadeType.ALL, mappedBy = "teamModality" , fetch = FetchType.LAZY)
private Collection<Modality> modalitiesCollection;
public Teams() {
}
public Teams(Long id_team , String name) {
this.id = id_team;
this.name = name;
}
我一直在阅读这方面的内容,人们告诉我 JPA 不支持 FetchType.EAGER 用于同一实体中的多个 realtionships。但我需要在这个实体中具体使用多个关系。我不知道该怎么办了,因为我尝试了几种方法,Lazy fetching,所有这些方法都存在某种问题。例如,如果我在课堂上只留下一个 FetchType.EAGER ,那么它会部署我的应用程序,但它无法正常运行,因为当我尝试从数据库中获取 List 时,它会给我错误:LazyInitializationException,当我尝试将它们全部使用 FetchType.EAGER 它只是没有部署,因为它给出了错误:无法实例化多个包。
所以我在这里的问题与:
1) Maven-jboss-webapp-archetype 使用 hibernate 或 jpa 或两者兼而有之?2)如何解决在实体中使用多个@OneToMany 关系的问题?尽管我知道急切地获取模型中的集合并不是最好的方法,因为当系统增长时,我可能会遇到性能问题,对吧?那么如何才能正确使用延迟加载呢?