2015-04-23 3 views
0

Я использую JPA 2.1 с Hibernate 4.x. Я обнаружил, что @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 в Nullable:

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

Значение по умолчанию для обнуляемого собственности является «ложным» ,

+0

Спасибо за ответ. ваш ответ правильный. работает. Но Map Map всегда используется, когда мы используем Map Object. поэтому '@ MapKeyColumn' должен быть не нулевым. Странно, что если это всего лишь нулевое значение, он работает хорошо. – ohyun

+0

Это проблема в вашей базе данных, и она не имеет ничего общего с проблемой и решением. Если ответ правильный, отметьте его как один, чтобы другие могли его использовать. –

Смежные вопросы