我有部门和雇员实体。Employee表有三列:
在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
我有部门和员工实体,部门实体类与雇员实体有以下关系:
@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;
}发布于 2015-08-31 02:41:27
实体类的任何方法或持久实例变量都不能是final。从props中删除这个修饰符,映射注释看起来很好。
请注意,在java 7中,您不能放置空值,因为java.util.Hashtable不允许它,正如您在异常日志中看到的那样,它是EclipseLink使用的映射的实现。见这个java的官方文档。
https://stackoverflow.com/questions/32300256
复制相似问题