2015-04-23 57 views
0

我在Hibernate 4.x中使用JPA 2.1。我发现@MakKeyColumn不是在开玩笑。@MapKeyColumn(name =“XXX”)不起作用

@Entity 
public class Department { 
    @Id private int id; 

    @OneToMany(mappedBy = "department") 
    @MapKeyColumn(name = "cub_id") 
    private Map<String, Employee> employeesByCubicle = new HashMap<>(); 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public Map<String, Employee> getEmployeesByCubicle() { 
     return employeesByCubicle; 
    } 

    public void setEmployeesByCubicle(Map<String, Employee> employeesByCubicle) { 
     this.employeesByCubicle = employeesByCubicle; 
    } 
} 

如果执行上面的代码中,我可以看到下面的错误

Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "cub_id" violates not-null constraint 
    Detail: Failing row contains (2, xxxxxx, null, null). 

但是,如果我忽略@MapKeyColumn,它的工作。任何人都可以让我知道为什么它不工作使用@MapKeyColumn

感谢提前:)

回答

0

响应时尝试定义MapKeyColumn可为空:

@MapKeyColumn(name = "cub_id", nullable = true) 

为空的属性的默认值是“假” 。

+0

感谢您的回复。你的回答是正确的。它正在工作。但是,当我们使用Map Object时,总是使用Map Key。所以'@ MapKeyColumn'必须不为空。奇怪的是,如果它只是可以空的,那么运作良好。 – ohyun

+0

这是数据库中的问题,它与问题和解决方案无关。如果答案是正确的,请将其标记为一个,以便其他人可以使用它。 –