早上好 Stackoverflow,
我有一个问题,它给了我错误:
无法创建 sessionFactory object.org.hibernate.AnnotationException:非法尝试将非集合映射为 @OneToMany、@ManyToMany 或 @CollectionOfElements:nl.scalda.pasimo.model.employeemanagement.EducationTeam.coachGroups
你知道为什么吗?
@OneToMany(cascade=CascadeType.ALL, targetEntity=CoachGroup.class)
@JoinColumn(name="id")
private TreeSet<CoachGroup> coachGroups = new TreeSet<>();
private SessionFactory factory;
private void initialiseFactory() {
try {
factory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
}
原文由 mh123hack 发布,翻译遵循 CC BY-SA 4.0 许可协议
异常很简单,它说: 非法尝试将非集合映射为 @OneToMany、@ManyToMany 或 @CollectionOfElements ,所以这里的原因很明显,如果我们看一下 Hibernate Collection 映射 文档,它清楚地指出:
您使用了 TreeSet ,它是
Set<E>
和SortedSet<E>
接口的实现 类。因此,您的实际映射不适用于TreeSet
,您应该使用Set<CoachGroup>
而不是TreeSet<CoachGroup>
: