我使用Java创建RESTful api,但是hibernate和mysql出现问题。我为db中的所有表创建了控制器,但是只有一个出现此错误。我是休眠的新手,所以我使用自动生成的实体。
2019-05-07 22:48:00.495 INFO 4208 --- [nio-8080-exec-1] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate: select orderentit0_.id_order as id_order1_5_0_, orderentit0_.Check_in_date as Check_in2_5_0_, orderentit0_.Date_of_eviction as Date_of_3_5_0_, orderentit0_.Resident as Resident4_5_0_, orderentit0_.Room as Room5_5_0_, orderentit0_.Stock as Stock6_5_0_ from order orderentit0_ where orderentit0_.id_order=?
2019-05-07 22:48:00.545 WARN 4208 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1064, SQLState: 42000
2019-05-07 22:48:00.545 ERROR 4208 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order orderentit0_ where orderentit0_.id_order=1' at line 1
2019-05-07 22:48:00.546 INFO 4208 --- [nio-8080-exec-1] o.h.e.internal.DefaultLoadEventListener : HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet
2019-05-07 22:48:00.553 ERROR 4208 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order orderentit0_ where orderentit0_.id_order=1' at line 1
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:970) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1020) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:419) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:191) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:121) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:197) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4279) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:482) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:452) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:203) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:262) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:105) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:73) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1287) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.internal.SessionImpl.access$2100(SessionImpl.java:212) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2930) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.lambda$load$1(SessionImpl.java:2911) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.perform(SessionImpl.java:2867) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2911) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at org.hibernate.internal.SessionImpl.get(SessionImpl.java:1097) ~[hibernate-core-5.4.2.Final.jar:5.4.2.Final]
at api.DAO.OrderDAOimpl.findById(OrderDAOimpl.java:11) ~[classes/:na]
at api.services.OrderService.findById(OrderService.java:18) ~[classes/:na]
at api.controller.OrderController.find(OrderController.java:20) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
CREATE TABLE `Order` (
`id_order` INTEGER NOT NULL AUTO_INCREMENT,
`Resident` INTEGER,
`Room` INTEGER,
`Stock` INTEGER,
`Check_in_date` DATETIME,
`Date_of_eviction` DATETIME,
PRIMARY KEY (`id_order`)
) ENGINE=myisam DEFAULT CHARSET=utf16;
居民,房间和库存存储到其他桌子的钥匙。
package api.Entity;
import javax.persistence.*;
import java.sql.Timestamp;
import java.io.Serializable;
@Entity
@Table(name = "order", schema = "hotel")
public class OrderEntity implements Serializable {
private int idOrder;
private Integer resident;
private Integer room;
private Integer stock;
private Timestamp checkInDate;
private Timestamp dateOfEviction;
@Id
@Column(name = "id_order", nullable = false)
public int getIdOrder() {
return idOrder;
}
public void setIdOrder(int idOrder) {
this.idOrder = idOrder;
}
@Basic
@Column(name = "Resident", nullable = true)
public Integer getResident() {
return resident;
}
public void setResident(Integer resident) {
this.resident = resident;
}
@Basic
@Column(name = "Room", nullable = true)
public Integer getRoom() {
return room;
}
public void setRoom(Integer room) {
this.room = room;
}
@Basic
@Column(name = "Stock", nullable = true)
public Integer getStock() {
return stock;
}
public void setStock(Integer stock) {
this.stock = stock;
}
@Basic
@Column(name = "Check_in_date", nullable = true)
public Timestamp getCheckInDate() {
return checkInDate;
}
public void setCheckInDate(Timestamp checkInDate) {
this.checkInDate = checkInDate;
}
@Basic
@Column(name = "Date_of_eviction", nullable = true)
public Timestamp getDateOfEviction() {
return dateOfEviction;
}
public void setDateOfEviction(Timestamp dateOfEviction) {
this.dateOfEviction = dateOfEviction;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
OrderEntity that = (OrderEntity) o;
if (idOrder != that.idOrder) return false;
if (resident != null ? !resident.equals(that.resident) : that.resident != null) return false;
if (room != null ? !room.equals(that.room) : that.room != null) return false;
if (stock != null ? !stock.equals(that.stock) : that.stock != null) return false;
if (checkInDate != null ? !checkInDate.equals(that.checkInDate) : that.checkInDate != null) return false;
if (dateOfEviction != null ? !dateOfEviction.equals(that.dateOfEviction) : that.dateOfEviction != null)
return false;
return true;
}
@Override
public int hashCode() {
int result = idOrder;
result = 31 * result + (resident != null ? resident.hashCode() : 0);
result = 31 * result + (room != null ? room.hashCode() : 0);
result = 31 * result + (stock != null ? stock.hashCode() : 0);
result = 31 * result + (checkInDate != null ? checkInDate.hashCode() : 0);
result = 31 * result + (dateOfEviction != null ? dateOfEviction.hashCode() : 0);
return result;
}
}
package api.DAO;
import api.Entity.OrderEntity;
import api.utils.HibernateSessionFactoryUtil;
import org.hibernate.query.Query;
import java.util.List;
public class OrderDAOimpl implements EntityDAO {
public OrderEntity findById(int id) {
return HibernateSessionFactoryUtil.getSessionFactory().openSession().get(OrderEntity.class, id);
}
public List getAll() {
return HibernateSessionFactoryUtil.getSessionFactory().openSession().createQuery("from OrderEntity").list();
}
public int lastId() {
Query query = HibernateSessionFactoryUtil
.getSessionFactory()
.openSession()
.createQuery("from OrderEntity order by idOrder desc");
query.setMaxResults(1);
OrderEntity entity = (OrderEntity) query.uniqueResult();
return entity.getIdOrder();
}
}
package api.services;
import api.DAO.DAOimpl;
import api.DAO.OrderDAOimpl;
import api.Entity.OrderEntity;
import java.util.List;
public class OrderService {
private OrderDAOimpl EntityDao = new OrderDAOimpl();
private DAOimpl<OrderEntity> dao = new DAOimpl<OrderEntity>();
public OrderService() {}
public int lastId() { return this.EntityDao.lastId(); }
public OrderEntity findById(int id) {
return EntityDao.findById(id);
}
public List getAll() {
return EntityDao.getAll();
}
public void saveUser(OrderEntity entt) { dao.save(entt); }
public void deleteUser(OrderEntity entt) {
dao.delete(entt);
}
public void updateUser(OrderEntity entt) {
dao.update(entt);
}
}
package api.controller;
import api.Entity.OrderEntity;
import api.services.OrderService;
import com.google.gson.Gson;
import org.springframework.web.bind.annotation.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
@RestController
public class OrderController {
@CrossOrigin(origins = "http://localhost:4200")
@GetMapping("/order/{id}")
public String find(@PathVariable String id) {
OrderService Service = new OrderService();
OrderEntity item = Service.findById(Integer.parseInt(id));
return new Gson().toJson(item);
}
//...other endpoints...
}
请帮助。