有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    对于集合字段,不能同时使用@ElementCollection和@ManyToMany

    如果集合的值是实体,则可以使用以下两种值之一:@OneToMany或@ManyToMany

    如果集合的值是非实体,则必须使用@ElementCollection

    在您的例子中,地图的值是字符串,而不是实体。因此,您需要使用@ElementCollection。删除@ManyToMany映射。无论映射键是否为实体,都应遵循此规则