я использую spring 5.2
и java 8
. Я хочу использовать Convetrer с пружиной. но я постоянно получаю сообщение об ошибке, связанной с EntityManagerFactory:
29-Mar-2020 13: 55: 15.176 INFO [RMI TCP Connection (3) -127.0.0.1] org. apache .catalina. core.ApplicationContext.log Нет Spring Типы WebApplicationInitializer, обнаруженные в пути к классам 29-Mar-2020 13: 55: 15.533 INFO [Соединение RMI TCP (3) -127.0.0.1] org. apache .catalina.core.ApplicationContext.log Инициализация Spring root WebApplicationContext 29-Mar-2020 13: 55: 18.113 SEVERE [Соединение RMI TCP (3) -127.0.0.1] org. apache .catalina.core.StandardContext.listenerStart Исключение, отправляющее инициализированное событие контекста для экземпляра слушателя класса [org.springframework.web.context.ContextLoaderListener] org.springframework.beans.factory.BeanCreationException: Ошибка при создании объекта с именем 'entityManagerFactory', определенным в ресурсе пути к классу [spring / spring-db.xml]: сбой вызова метода init; вложенное исключение: org.hibernate.boot.archive.spi.ArchiveException: не удалось создать ClassFile в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanf. .support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory * * тысяча двадцать-семь:. 595) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory java:. 517) при org.springframework.beans.factory.support.AbstractBeanFactory & lambda $ doGetBean $ 0 (AbstractBeanFactory java:. 323) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry java:. 222) в org.springframework.beans.factory.support.AbstractBeanFactory. doGetBean (AbstractBeanFactory. java: 321) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory. java: 202) в org.springframework.conte xt.support.AbstractApplicationContext.getBean (AbstractApplicationContext. java: 1108) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext. javaworktepp.ra.traf.raf.traf. 1035 *. : 292) at org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener. java: 103) в org. apache .catalina.core.StandardContext.listenerStart (StandardContext. java. 4699) apache .catalina.core.StandardContext.startInternal (StandardContext. java: 5165) в орг. apache .catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в орг. apache. catalina.core.ContainerBase.addChildInternal (. ContainerBase java: 743) в орг. apache .catalina.core.ContainerBase.addChild (ContainerBase. java: 719) в орг. apache .catalina.core.StandardHost.addChild (StandardHost. java: 705) в орг. apache .catalina. .reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .lang.reflect.Method.invoke (Method. java: 498) в org. apache .tomcat.util.molBan .invoke (BaseModelMBean. java: 287) в com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke (DefaultMBeanServerInterceptor. java: 819) на com.sun.jmx.mbeanserver.JmxMBeanServer.invoke (JmxMBeanServer. java: 801) в орг. в орг. 62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .lang.reflect.Method.invoke (Method. java: 498) в org. apache .tomcat.util .modeler.BaseModelMBean.invoke (BaseModelMBean. java: 287) в com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke (DefaultMBeanServerInterceptor. java: 819) в com.sun.jerxer . java: 801) в com.sun.jmx.remote.security.MBeanServerAccessController.invoke (MBeanServerAccessController. java: 468) в javax.management.remote.rmi.RMIConnectionImpl.doOperation (RMIConn ectionImpl. java: 1468) на javax.management.remote.rmi.RMIConnectionImpl.access $ 300 (RMIConnectionImpl. java: 76) на javax.management.remote.rmi.RMIConnectionImpl $ Privileged *peration.runI (RMIConne) : 1309) в java .security.AccessController.doPrivileged (собственный метод) в javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation (RMIConnectionImpl. java: 1408) в javax.management.remote.onmpImMr. (RMIConnectionImpl. java: 829) в sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62). 1082 *: 43) в java .lang.reflect.Mehod.invoke (Метод. java: 498) в sun.rmi.server.UnicastServerRef.dispatch (UnicastServerRef. java: 346) в sun.rmi. transport.Transport $ 1.run (Transport. java: 200) в sun.rmi.transport.Transport $ 1.run (Transport. java: 197) в java .security.AccessController.doPrivilege d (Собственный метод) в sun.rmi.transport.Transport.serviceCall (Транспорт. java: 196) в sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport. java: 568) в sun.rmi. transport.tcp.TCPTransport $ ConnectionHandler.run0 (TCPTransport. java: 826) в sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.lambda $ run $ 0 (TCPTransport. java: 683) в java .security .AccessController.doPrivileged (собственный метод) в sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run (TCPTransport. java: 682) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor: 1142) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 617) в java .lang.Thread.run (Thread. java: 748) Причина: org.hibernate .boot.archive.spi.ArchiveException: Не удалось создать ClassFile в org.hibernate.boot.archive.scan.spi.ClassFileArchiveEntryHandler.toClassFile (ClassFileArchiveEntryHandler. java: 64) в org.hibernate.scan.i. .ClassFileArchiveEntryHandler.handleEntry (ClassF ileArchiveEntryHandler. java: 47) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory (ExplodedArchiveDescriptor. java: 143) в org.hibernate.boot.archive.incript.ExcessoryDexcript.ExternalDirectory. *: 118) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory (ExplodedArchiveDescriptor. java: 118) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory (Explodedorchive. java: 118) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory (ExplodedArchiveDescriptor. java: 118) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.visitArchive *. 54) в org.hibernate.boot.archive.scan.spi.AbstractScannerImpl.scan (AbstractScannerImpl. java: 47) в org.hibernate.boot.model.process.internal.ScanningCoordinator.coordinateScan (ScanningCoordinator. java): 76) в org.hibernate.boot.model.process.spi.MetadataBuildingProcess.prepare (MetadataBuildingProcess. java: 98) в org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl. org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl. (EntityManagerFactoryBuilderImpl. java: 168) в org.hibernate.jpa.boot.spi. Bootstrap .getEntityManagerFactoryBuilder 11 или 11) 16 .hibernate.jpa.boot.spi. Bootstrap .getEntityManagerFactoryBuilder (Bootstrap. java: 89) в org.hibernate.jpa.HibernatePersistencePro (. HibernatePersistenceProvider java 166) vider.getEntityManagerFactoryBuilder на org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory (HibernatePersistenceProvider * * тысяча сто двадцать один:. 141) при org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory (LocalContainerEntityManagerFactoryBean java.: 365) в org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory (AbstractEntityManagerFactoryBean. java: 391) в org.springframework.orm.jpa. .jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet (LocalContainerEntityManagerFactoryBean. java: 341) в
моя модель:
@Entity
@Table(name="meals")
public class Meal {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Integer id;
@Convert(converter = MealConverter.class)
@Column(name = "date_time")
LocalDateTime datetime;
@Column(name = "description")
private String description;
@Column(name = "calories")
private int calories;
public Meal() {
}
public Meal(int id) {
this.id = id;
}
public Meal(int id, LocalDateTime datetime, String description, int calories) {
this.id = id;
this.datetime = datetime;
this.description = description;
this.calories = calories;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public LocalDateTime getDatetime() {
return datetime;
}
public void setDatetime(LocalDateTime datetime) {
this.datetime = datetime;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getCalories() {
return calories;
}
public void setCalories(int calories) {
this.calories = calories;
}
public boolean isNew() {
return this.id == null;
}
}
мой преобразователь:
@Converter(autoApply = true)
public class MealConverter implements AttributeConverter<LocalDateTime, Timestamp> {
private static final String SEPARATOR = ", ";
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime localDateTime) {
return Optional.ofNullable(localDateTime)
.map(Timestamp::valueOf)
.orElse(null);
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp timestamp) {
return Optional.ofNullable(timestamp)
.map(Timestamp::toLocalDateTime)
.orElse(null);
}
}
1014 * ошибка из-за spring-db. xml:
<context:property-placeholder location="classpath:db/postgres.properties"/>
<bean id="myDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${database.driverClassName}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="packagesToScan" value="ru.demo.exercise.models"/>
<property name="dataSource" ref="myDataSource"/>
<property name="jpaProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</prop>
</props>
</property>
<property name="persistenceProvider">
<bean class="org.hibernate.jpa.HibernatePersistenceProvider"/>
</property>
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<jpa:repositories base-package="ru.demo.exercise.repository.datajpa" entity-manager-factory-ref="entityManagerFactory"/>
<tx:annotation-driven/>
Также я использую javasist 3.12.1.GA
.
Что не так в моем коде?