Java Log4j2需要FilteredObjectInputStream,但JPA只提供ObjectInputStream

Java Log4j2需要FilteredObjectInputStream,但JPA只提供ObjectInputStream,java,hibernate,log4j2,jpa-2.1,Java,Hibernate,Log4j2,Jpa 2.1,我试图使用Hibernate和JPA将LOG4J2生成的日志消息保存到数据库中,但JPA似乎只提供了ObjectInputStream,而没有提供FilteredObjectStream 在我的研究过程中,我注意到这个特殊的log4j组件已经被修改为与JAVA9兼容。一个编译为Java9的短测试没有起作用,也有同样的错误 可以在JPA中强制执行inputstream的类吗? 提前谢谢你 组成部分: Log4J2 2.11(核心和jpa) 冬眠5.2.16 JPA 2.1 JDK 1.8_151

我试图使用Hibernate和JPA将LOG4J2生成的日志消息保存到数据库中,但JPA似乎只提供了
ObjectInputStream
,而没有提供
FilteredObjectStream

在我的研究过程中,我注意到这个特殊的log4j组件已经被修改为与JAVA9兼容。一个编译为Java9的短测试没有起作用,也有同样的错误

可以在JPA中强制执行inputstream的类吗?
提前谢谢你

组成部分:

  • Log4J2 2.11(核心和jpa)
  • 冬眠5.2.16
  • JPA 2.1
  • JDK 1.8_151
错误消息:

2018-04-06 13:03:25,853 XNIO-1 I/O-4 ERROR Unable to write to database [jpaManager{ description=rootLoggingDB, bufferSize=0, persistenceUnitName=loggingPersistenceUnit, entityClass=com.foo.bar.models.LogEntry}] for appender [rootLoggingDB]. org.apache.logging.log4j.core.appender.AppenderLoggingException: Failed to insert record for log event in JPA manager: readObject requires a FilteredObjectInputStream or an ObjectInputStream that accepts an ObjectInputFilter
    at com.foo.bar.logging.JpaDatabaseManagerCustomProperties.writeInternal(JpaDatabaseManagerCustomProperties.java:115)
    at org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.write(AbstractDatabaseManager.java:210)
    ...
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:403)
    at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
    at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
    at org.jboss.logging.Log4j2Logger.doLogf(Log4j2Logger.java:66)
    at org.jboss.logging.Logger.logf(Logger.java:2398)
    at org.jboss.logging.DelegatingBasicLogger.tracef(DelegatingBasicLogger.java:124)
    at org.xnio.nio.WorkerThread.run(WorkerThread.java:505)
Caused by: java.lang.IllegalArgumentException: readObject requires a FilteredObjectInputStream or an ObjectInputStream that accepts an ObjectInputFilter
    at org.apache.logging.log4j.util.SortedArrayStringMap.readObject(SortedArrayStringMap.java:596)
    at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2173)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2064)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568)
    ...
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:782)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:767)
    at com.foo.bar.JpaDatabaseManagerCustomProperties.writeInternal(JpaDatabaseManagerCustomProperties.java:107)
    ... 16 more