从 7.2 移植后的 Liferay 7.3 java.lang.NullPointerException

问题描述

我正在从 Liferay 7.2 移植到 Liferay 7.3.6 GA7。 我有一个自定义表。 当我使用 ..LocalServiceUtil 添加第一行时,就可以了。但是每次我使用持久性(例如 tablePersistence.update(table);)失败并且 liferay 抛出:

错误 [http-nio-8080-exec-1][ExceptionMapper:31] java.lang.NullPointerException java.lang.NullPointerException 在 com.liferay.portal.cache.internal.dao.orm.FinderCacheImpl._getArguments(FinderCacheImpl.java:466) 在 com.liferay.portal.cache.internal.dao.orm.FinderCacheImpl.updateByEntityCache(FinderCacheImpl.java:378) 在 com.liferay.portal.cache.internal.dao.orm.EntityCacheImpl._putResult(EntityCacheImpl.java:439) 在 com.liferay.portal.cache.internal.dao.orm.EntityCacheImpl.putResult(EntityCacheImpl.java:336) 在 com.liferay.portal.cache.internal.dao.orm.EntityCacheImpl.putResult(EntityCacheImpl.java:358) 在 com.liferay.portal.cache.internal.dao.orm.EntityCacheImpl.putResult(EntityCacheImpl.java:328)

尝试执行 entityCache.putResult(entityCacheEnabled,...); 时,异常在 ..PersistenceImpl 中; 我不明白是我在移植过程中丢失了什么还是 7.3 中丢失了什么。

这是一个在customTable中添加一行的方法示例,fooPersistence.update(foo)在第一次后抛出异常:

 const onScroll = useCallback(() => set((state) => (state + 1) % 3),[])
  const transitions = useTransition(index,(p) => p,{
    from: { opacity: 0,transform: 'translate3d(75%,200%,0)' },enter: { opacity: 1,leave: { opacity: 0,-100%,})
window.addEventListener('scroll',onScroll,false)

解决方法

有同样的问题。在调试 ServiceBuilder 的代码后,我发现用于生成类的模板使用来自 service.xml 的 DTD 定义的版本(检查 com.liferay.portal.tools.service.builder.jar 中的文件 persistence_impl.ftl)。确保您有 7.3.0 而不是 7.2.0(甚至更早版本)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 7.3.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_7_3_0.dtd">

<service-builder...>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...