java如何在实体类中添加HashMap<Object,String>?
我正在尝试创建一个示例成绩单应用程序,并希望保留科目和学生成绩之间的映射 这是我的记分卡课程:
@Entity
public class ScoreCard {
@NotNull @ElementCollection @ManyToMany(cascade=CascadeType.ALL)
private Map<Subject, String> gradesForMainSubject = new HashMap<Subject, String>();
}
但在试图保存数据时,我总是以
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: gradesForMainSubject
主题本身是一个托管实体(由@Entity
注释)。关于我如何前进的任何建议
# 1 楼答案
对于集合字段,不能同时使用@ElementCollection和@ManyToMany
如果集合的值是实体,则可以使用以下两种值之一:@OneToMany或@ManyToMany
如果集合的值是非实体,则必须使用@ElementCollection
在您的例子中,地图的值是字符串,而不是实体。因此,您需要使用@ElementCollection。删除@ManyToMany映射。无论映射键是否为实体,都应遵循此规则