Я работал с моим любимым проектом, с angular, springboot и Hibernate.Я довольно новичок в спящем режиме.Я получаю следующее исключение.
2019-01-31 20: 29: 27.973 ОШИБКА 5256 --- [nio-8900-exec-1] ohpaccess.spi.GetterMethodImpl: HHH000122: IllegalArgumentExceptionв классе: com.span.model.Customer, метод получения свойства: custName 2019-01-31 20: 29: 27.973 INFO 5256 --- [nio-8900-exec-1] cssdaoService.CommonServiceDaoImpl: Исключение в saveCustomer: org.hibernate.PropertyAccessException: IllegalArgumentException произошла, вызывая получатель com.span.model.Customer.custName org.hibernate.PropertyAccessException: IllegalArgumentException произошла, вызывая получатель com.span.model.Customer.custName в org.hibernate.proti.perty.GetterMethodImpl.get (GetterMethodImpl.java:65) в org.hibernate.property.access.spi.GetterMethodImpl.getForInsert (GetterMethodImpl.java:77) в org.hibernate.tuple.entity.Tupliteв org.hibernate.tuple.entity.PojoEntityTuplizer.getPropertyValuesToInsert (PojoEntityTuplizer.java:225) в org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValuesToInsert (AbstractEntityPersister.java:4999) в org.hibernate.event.internal.AbstractSaveEventListener.performSibere.internal.AbstractSaveEventListener.performSave (AbstractSaveEventListener.java:200) по адресу org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId (AbstractSaveEventListener.java:131) по адресу org.hibernate.eaveateWeventWreadEventWreadEventWeventUventEventWeventUventEventWrightWventEventEventWeventUventEventWeventUventEventWeventUventEventEventWeventUventEventEventTeventUventEventWeventUventWeventUventWeventUventTevent.WeventEventWeb) в org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId (DefaultSaveEventListener.java:38) в org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient (executeSaveOrUpdate (DefaultSaveEventListener.java:32) в org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:73) в org.hibernate.internal.SessionImpl.fireSave (SessionImpl.java:709) в org.hibernate.internal.hiber Session.j.internal.() в org.springframework.cglib.proxy.MethodProxy.invoke (MethodProxy.java:218) в org.springframework.aop.framework.CglibAopProxy $ CglibMethodInvocation.invokeJoinpoint (Cgliframe.pro.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:163) в org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke (PersistenceExceptionTranslationInterceptor.jwork:13ectiveMethodInvocation.java:186) в org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept (CglibAopProxy.java:688) в com.span.service.daoService.CommonService.CommonCafspan.service.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)в java.lang.reflect.Method.invoke (Method.java:498) в org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:189) в org.springfaramehovb.web.web.web.,Домен(AbstractHandlerMethodAdapter.java:87) в org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:1038) в org.springframework.web.servlet.DispatcherServlet.doService (Dispatcher): 942) в org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:1005) в org.springframework.web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:908) в javtserv.lett.сервис (HttpServlet.java:660) в org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:882) в javax.servlet.http.HttpServlet.service (HttpServlet.java:7apache.cat или в org.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:231) по адресу org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) по адресу org.apache.tomcat.websoilF (WF).: 53) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.s.web.trace.servlet.HttpTraceFilter.doFilterInternal (HttpTraceFilter.java:90) в org.springframework.web.filter.166) по адресу org.springframework.web.filter.RequestContextFilter.doFilterInternal (RequestContextFilter.java:99) по адресу org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.hain.Ag.F..internalDoFilter (ApplicationFilterChain.java:193) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.springframework.web.filter.FormContentFilter.doFava:ilFilter (FormFilterInter).springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.ina.Fache.Cache.oFilter (ApplicationFilterChain.java:166) в org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal (HiddenHttpMethodFilter.java:93) в org.springframework.web.filter.Oavailf.catalina.core..filterAndRecordMetrics (WebMvcMetricsFilter.java:117) в org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal (WebMvcMetricsFilter.java:106) вorg.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:19apilFalterFactor.AFF) в orgApplicationFilterChain.java:166) в org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:200) в org.springframework.web.filter.OncePerRequestFilter.ilache. Once..core.ApplicationFilterChain.) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:96) в org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:490) в org.apache.catalta.core.вызова (StandardHostValve.java:139) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:92) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:74.cat в org.connector.CoyoteAdapter.service (CoyoteAdapter.java:343) в org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:408) в org.apache.coyote.AbstractProcessorLight.proight (AbstractProcessL).org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:834) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1417) в org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run.jun ().apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:748) Причина: java.DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.hibernate.property.access.spi.GetterMethodImpl.get (GetterMethodImpl.java:42) ... еще 2019-01-31 20: 29: 27.992 ИНФОРМАЦИЯ 5256 --- [nio-8900-exec-1] cssdaoService.CommonServiceDaoImpl: saveCustomer заканчивается customerId: 0
Мой метод saveCustomer в CommonServiceDaoImpl выглядит следующим образом:
public int saveCustomer(Customer customer) {
log.info("saveCustomer starts");
try {
customer.setCustAge(util.calculateAge(customer.getCustDob()));
customer.setCustPass(util.getSHA(customer.getCustPass()));
SessionFactory sessionFactory = new
Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(customer);
session.getTransaction().commit();
session.close();
} catch(Exception ex) {
log.info("Exception in saveCustomer: "+ex);
ex.printStackTrace();
}
log.info("saveCustomer ends with customerId: "+customer.getCustId());
return customer.getCustId();
}
Класс модели клиента выглядит следующим образом:
package com.span.model;
import java.util.Date;
import lombok.Data;
import lombok.Getter;
@Data
public class Customer {
private int custId;
private String custName;
private int custAge;
private String custGen;
private Date custDob;
private String custEmail;
private String custMob;
private String custPass;
}
Вызов контроллера выглядит следующим образом:
@RequestMapping(value = "/brw/registerCustomer", method = {RequestMethod.POST })
public Long registerCustomer(@RequestBody Customer customer) {
int custId = 0;
log.info("registerCustomer starts..." + customer);
try {
custId = registerService.registerCustomer(customer);
log.info("registerCustomer ends..." + custId);
} catch (Exception ex) {
System.out.println("Exception is: " + ex);
log.info("Exception is: " + ex);
}
return Long.valueOf(custId);
}
Наконец, мое отображение гибернации выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.span.model.Customer" table="Customer">
<meta attribute="class-description">
This class contains the customer detail.</meta>
<id name="custId" type="java.lang.Integer" column="cust_id">
<generator class="sequence-identity">
<param name="sequence">customer_seq</param>
</generator>
</id>
<property name="custName" type="string" column="cust_name" />
<property name="custAge" column="cust_age" type="java.lang.Integer" />
<property name="custGen" column="cust_gen" type="string" />
<property name="custEmail" column="cust_mail" type="string" />
<property name="custMob" column="cust_mob" type="string" />
<property name="custPass" column="password" type="string" />
<property name="custDob" column="cust_dob" type="java.sql.Date" />
</class>
</hibernate-mapping>
Я использую оракула 12g.Пожалуйста, дайте мне знать, где я ошибаюсь, заранее спасибо.