1
@Entity
@Table(name = "LOCATION")
public class Location {

@Id
@Column(name = "LOC_ID")
protected int locId;

@Column(name = "LOC_NAME")
protected String locName;

@Column(name = "LOC_TYPE")
protected String locType;

@Column(name = "PINCODE")
protected String pincode;

@Column(name = "SHIPPING_TYPE")
protected String shippingType;

@Column(name = "CONTACT")
protected String contact;

@Column(name = "PROCESS_ CODE")
protected String processCode;

@Column(name = "TRANSPORT")
protected String transport;

public Location() {

}

public Location(int locId) {
    this.locId = locId;
}

public int getLocId() {
    return locId;
}

public void setLocId(int locId) {
    this.locId = locId;
}

public String getLocName() {
    return locName;
}

public void setLocName(String locName) {
    this.locName = locName;
}

public String getLocType() {
    return locType;
}

public void setLocType(String locType) {
    this.locType = locType;
}

public String getPincode() {
    return pincode;
}

public void setPincode(String pincode) {
    this.pincode = pincode;
}

public String getShippingType() {
    return shippingType;
}

public void setShippingType(String shippingType) {
    this.shippingType = shippingType;
}

public String getContact() {
    return contact;
}

public void setContact(String contact) {
    this.contact = contact;
}

public String getProcessCode() {
    return processCode;
}

public void setProcessCode(String processCode) {
    this.processCode = processCode;
}

public String getTransport() {
    return transport;
}

public void setTransport(String transport) {
    this.transport = transport;
}

@Override
public String toString() {
    return "Location [locId=" + locId + ", locName=" + locName + ",             locType=" + locType + ", pincode=" + pincode
            + ", shippingType=" + shippingType + ", contact=" + contact +    ", processCode=" + processCode
            + ", transport=" + transport + "]";

Controller

@RequestMapping(value="/insertLoc",method=RequestMethod.POST)
public String saveLocation(@ModelAttribute("location")Location                   loc,ModelMap map){
    int locId=service.saveLocation(loc);
    map.addAttribute("message", "Location added with Location Id "+ locId);
    return "locReg";
}

Exception

Hibernate: insert into LOCATION (CONTACT, LOC_NAME, LOC_TYPE, PINCODE, PROCESS_ CODE, SHIPPING_TYPE, TRANSPORT, LOC_ID) values (?, ?, ?, ?, ?, ?, ?, ?)
May 25, 2017 5:35:37 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/VendorApp] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into LOCATION (CONTACT, LOC_NAME, LOC_TYPE, PINCODE, PROCESS_ CODE, SHIPPING_TYPE, TRANSPORT, LOC_ID) values (?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update] with root cause
java.sql.BatchUpdateException: ORA-00917: missing comma

    at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10657)
    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
    at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:407)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
    at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683)
    at com.vendor.app.dao.impl.LocationDaoImpl.saveLocation(LocationDaoImpl.java:21)
    at com.vendor.app.service.impl.LocationServiceImpl.saveLocation(LocationServiceImpl.java:20)
    at com.vendor.app.controller.LocationController.saveLocation(LocationController.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
2
  • Most probably wrong Dialect configuration Commented May 25, 2017 at 12:56
  • Next time, please edit your post so it is concise in what you are trying to accomplish and what is currently happening. The entire stack trace is not needed. Commented May 25, 2017 at 13:07

1 Answer 1

3

The Exception ORA-00917: missing comma indicates that there's a missing comma in your query:

insert into LOCATION (CONTACT, LOC_NAME, LOC_TYPE, PINCODE, PROCESS_ CODE, SHIPPING_TYPE, TRANSPORT, LOC_ID) values (?, ?, ?, ?, ?, ?, ?, ?)

And the problem is specifically with the column PROCESS_ CODE which has a white space after _, so it was evaluated as two different columns in the query.

You should fix it in your Entity class, where you should replace:

@Column(name = "PROCESS_ CODE")
protected String processCode;

With :

@Column(name = "PROCESS_CODE")
protected String processCode;

Note:

You should better declare your variables as private so your code respects better encapsulation rules.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.