如何解决weblogic 上的 spring 数据 jpa 抛出:java.lang.IllegalArgumentException:本地化消息键:type-not-managed
我之前看到过 this similar question,但它并没有解决我的问题。
您可以从 github
我使用的是 weblogic 12.4.2、spring 4.0.4、maven 3.6、Openjpa 2.4.2、springData 1.1.6 和 Eclipse ide 2020-06。
我必须在 weblogic(完全 java EE 环境)上部署我的应用程序,所以,正如 spring docks 13.5.1.2 Obtaining an EntityManagerFactory from JNDI 所说,我使用 jndi 注入 entityManagerFactory,
<jee:jndi-lookup jndi-name="java:comp/env/persistence/batchEntityManagerFactory" id="emf" />
并声明
<persistence-unit-ref>
<persistence-unit-ref-name>persistence/batchEntityManagerFactory</persistence-unit-ref-name>
<persistence-unit-name>batch</pe
rsistence-unit-name>
在战争项目的 web.xml 中。
这是我的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="batch" transaction-type="JTA" >
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl </provider>
<jta-data-source>jdbc/datasource</jta-data-source>
<class>com.smartsoft.persistence.Person</class>
<validation-mode>NONE</validation-mode>
<properties>
<property name="openjpa.jdbc.DBDictionary" value="derby(NextSequenceQuery=VALUES NEXT VALUE FOR {0})"/>
<!-- <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>-->
<property name="openjpa.Log" value="DefaultLevel=TRACE"/>
<property name="openjpa.TransactionMode" value="managed"/>
<property name="openjpa.Connection2UserName" value="app"/>
<property name="openjpa.Connection2Password" value="app"/>
<property name="openjpa.Connection2URL" value="jdbc:derby://localhost:1527/testdb;create=false"/>
<property name="openjpa.Connection2DriverName" value="org.apache.derby.jdbc.ClientDriver"/>
</properties>
</persistence-unit>
</persistence>
这是 Spring 的 xml 配置:
<beans
//xml name spaces
<context:component-scan base-package="com.smartsoft.persistence"/>
<context:annotation-config/>
<aop:aspectj-autoproxy/>
<tx:annotation-driven/>
<tx:jta-transaction-manager/>
<jee:jndi-lookup jndi-name="java:comp/env/persistence/batchEntityManagerFactory" id="emf" />
<jpa:repositories base-package="com.smartsoft.persistence" entity-manager-factory-ref="entityManagerFactory" consider-nested-repositories="true" />
</beans>
在使用@Startup 注释的 Singleton Ejb 中,我初始化了 spring 上下文。
context = new ClasspathXmlApplicationContext("applicationContext.xml");
@Entity
public class Person {
@SequenceGenerator(name="sec1",sequenceName="mysequence" )
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="sec1")
private long id;
private String firstName;
private String lastName;
private int age;
// simple getters and setters
}
还有一个简单的 DaoRepository,它扩展了 Spring 的 Jpa 存储库。
public interface DaoRepository<T,ID extends Serializable> extends JpaRepository<T,Serializable> {
}
在另一个 bean 中,我调用 DaoRepository.save 并将一个新的 Person 传递给它。
public Person savePerson(Person person) {
logger.info("person has been persisted successfully");
return repo.save(person);
}
weblogic.application.ModuleException: java.lang.IllegalArgumentException: localized message key: type-not-managed; substitutions: [class java.lang.Object]
at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
Truncated. see log file for complete stacktrace
Caused By: java.lang.IllegalArgumentException: localized message key: type-not-managed; substitutions: [class java.lang.Object]
at org.apache.openjpa.persistence.Meta.metamodelImpl.managedType(metamodelImpl.java:192)
at org.springframework.data.jpa.repository.support.JpametamodelEntityinformation.<init>(JpametamodelEntityinformation.java:67)
at org.springframework.data.jpa.repository.support.JpaEntityinformationSupport.getMetadata(JpaEntityinformationSupport.java:65)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityinformation(JpaRepositoryFactory.java:149)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:88)
Truncated. see log file for complete stacktrace
>
任何帮助都会得到帮助。 感谢分配。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。