Hibernate - 如何使用Object作为键来持久化HashMap

时间:2018-04-05 01:32:14

标签: java mysql database hibernate hashmap

我的项目意图是允许用户参加测试并回答每个选择题。我假设最好的想法是在User对象模型类中创建一个HashMap。我希望Key成为一个Question对象,并且Value可以是多选答案的Integer,也可以是" Answer"对象

这个问题很独特,因为我想知道如何使用Hibernate将HashMap正确地映射到数据库中。这个HashMap特别使用两个不同的对象作为Key和Value。我没有将此问题映射到数组列表,但是我使用Hashmaps,我认为它与我为注释命名的方式有关?

将数据保存到数据库时,我得到:

"无法执行声明;嵌套异常是org.hibernate.exception.GenericJDBCException:无法执行语句]的根本原因java.sql.SQLException:Field' question1_id'没有默认值"

package com.example.scrennerMVC.models;

import javax.persistence.*;
import java.util.Map;

 @Entity
 public class User1 {

     @Id
     @GeneratedValue
     private long id;

     private String email;

     @OneToMany(mappedBy="user")
     @MapKeyJoinColumn(name="QUESTION1_ID")
     private Map<Question1, Answer> answer; 
}

@Entity
public class Question1 {
    @Id
    @GeneratedValue
    private long id;

    @Basic
    private String question;
}



@Entity
public class Answer {

    @Id
    @GeneratedValue
    private long id;

    @ManyToOne
    private User user;

    private int answer;

}

0 个答案:

没有答案