2015-04-23 65 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

這是數據庫中的問題,它與問題和解決方案無關。如果答案是正確的,請將其標記爲一個,以便其他人可以使用它。 –

相關問題