2015-08-30 3 views
0

У меня есть подразделения и сотрудники. таблица Employee имеет три колонки:Обновление сущности NPE для @ElementColection of Map

  1. department_id
  2. KEY
  3. VALUE

Поставлен нулевое значение в моей вставки для не ключа нулевой в таблице Employee. Я получил NullPointerException во время моего обновления с не нулевым значением для существующего ключа во время prop.put(key, value):

java.lang.NullPointerException на java.util.Hashtable.put (Hashtable.java:514) в org.eclipse.persistence .indirection.IndirectMap.put (IndirectMap.java:543) на org.eclipse.persistence.internal.queries.MapContainerPolicy.addInto (MapContainerPolicy.java:131) на org.eclipse.persistence.internal.queries.MappedKeyMapContainerPolicy .addInto (MappedKeyMapContainerPolicy.java:196) по адресу org.eclipse.persistence.queries.DataReadQuery.executeNon Курсор (DataReadQuery.java:226) на org.eclipse.persistence.queries.DataReadQuery.executeDatabaseQuery (DataReadQuery.java:152) на org.eclipse.persistence.queries.DatabaseQuery.execute (DatabaseQuery.java:899) на org.eclipse.persistence.queries.DataReadQuery.execute (DataReadQuery.java:137) на org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork (DatabaseQuery.java:798) в org.eclipse.persistence .internal.sessions.UnitOfWorkImpl.internalExecuteQuery (UnitOfWorkImpl.java:2896) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery (AbstractSession.java:1804) на org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery (AbstractSession.java:1786) на org.eclipse.persistence.internal.indirection.QueryBasedValueHolder.instantiate (QueryBasedValueHolder.java:129) в орг .eclipse.persistence.internal.indirection.QueryBasedValueHolder.instantiate (QueryBasedValueHolder.java:116) на org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue (DatabaseValueHolder.java:89) на org.eclipse.persistence .internal.indirection.UnitOfWorkValueHolder.instantiateImpl (UnitOfWorkValueHolder.java:173) по адресу org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiate (UnitOfWor kValueHolder.java:234) на org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue (DatabaseValueHolder.java:89) на org.eclipse.persistence.indirection.IndirectMap.buildDelegate (IndirectMap.java:109) на org.eclipse.persistence.indirection.IndirectMap.getDelegate (IndirectMap.java:329) на org.eclipse.persistence.indirection.IndirectMap.put (IndirectMap.java:543)

EclipseLink версия составляет 2,5.2

Я имею Универмаги и работники Сущность и Департамент Entity класс имеет следующие отношения с Сотрудником Entity:

@Entity 
@Table(name = "DEPARTMENT" uniqueConstraints = { 
    @UniqueConstraint(columnNames = { "NAME" }) }) 
@NamedQueries({ 
    @NamedQuery(name = Department.findAll", query = "select d from Department d"), 
@NamedQuery(name = Department.findByName", query = "select d from Department d WHERE d.name = :name")}) 

public class Department implements Serializable { 

    @ElementCollection 
    @MapKeyColumn(name = "KEY") 
    @Column(name = "VALUE") 
    @CollectionTable(name="DEPARTMENT_PROP", joinColumns =  @joinColumn(name= "DEPARTMENT_ID)) 
    private final Map<String, String> props = new HashMap(); 


    public Map<String, String> getProperties() { 
     return properties; 
    } 

ответ

0

Нет методов или постоянный переменного экземпляр класса объекта могут быть final. Удаленный модификатор от props, аннотации отображения выглядят отлично.

Помните, что в java-версии 7 вы не можете поместить нулевые значения, потому что java.util.Hashtable не разрешает это, и, как вы можете видеть в журнале исключений, это реализация карты, которую использует EclipseLink. См. this java oficial doc.

+0

Я удалил финал и все еще получаю такую ​​же проблему. – spider

+0

Какую версию java вы используете? – Guillermo

+1

Предложите вам обновить свой ответ в отношении HashMap ... вы имеете в виду Hashtable (HashMap допускает null). Где Hashtable в следе происходит из ... возможно, внутренней переменной EclipseLink. Также методы могут быть окончательными, если сохраняющиеся поля –

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