首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体更新为@元素映射抛出NPE

实体更新为@元素映射抛出NPE
EN

Stack Overflow用户
提问于 2015-08-30 19:21:13
回答 1查看 326关注 0票数 0

我有部门和雇员实体。Employee表有三列:

  1. DEPARTMENT_ID
  2. 钥匙
  3. 价值

在Employee表中插入“非空键插入”中的空值。在更新过程中,我收到了NullPointerException,在prop.put(key, value)期间,现有密钥的非空值

org.eclipse.persistence.indirection.IndirectMap.put(IndirectMap.java:543) at org.eclipse.persistence.internal.queries.MapContainerPolicy.addInto(MapContainerPolicy.java:131) at org.eclipse.persistence.internal.queries.MappedKeyMapContainerPolicy.addInto(MappedKeyMapContainerPolicy.java:196) at org.eclipse.persistence.queries.DataReadQuery.executeNonCursor(DataReadQuery.java:226) at org.eclipse.persistence.queries.DataReadQuery java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:514)org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:899) at org.eclipse.persistence.queries.DataReadQuery.execute(DataReadQuery.java:137) at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:798) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2896) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1804) atorg.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1786) at org.eclipse.persistence.internal.indirection.QueryBasedValueHolder.instantiate(QueryBasedValueHolder.java:129) at org.eclipse.persistence.internal.indirection.QueryBasedValueHolder.instantiate(QueryBasedValueHolder.java:116) at org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:89) at org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiateImpl(UnitOfWorkValueHolder.java:173) at org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiate(UnitOfWorkValueHolder.java:234) at org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:89) at org.eclipse.persistence.indirection.IndirectMap.buildDelegate(IndirectMap.java:109) at org.eclipse.persistence.indirection.IndirectMap.getDelegate(IndirectMap.java:329) at org.eclipse.persistence.indirection.IndirectMap.put(IndirectMap.java:543)

EclipseLink版本为2.5.2

我有部门和员工实体,部门实体类与雇员实体有以下关系:

代码语言:javascript
复制
@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;
   }
EN

回答 1

Stack Overflow用户

发布于 2015-08-31 02:41:27

实体类的任何方法或持久实例变量都不能是final。从props中删除这个修饰符,映射注释看起来很好。

请注意,在java 7中,您不能放置空值,因为java.util.Hashtable不允许它,正如您在异常日志中看到的那样,它是EclipseLink使用的映射的实现。见这个java的官方文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32300256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档