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
-
That's a mistake.
2021-11-06 17:40:30.376 ERROR 4584 --- [legram Executor] 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 'interval, keyword, last_search_date, name, platform_id, state, user_id) values (' at line 1
Full error:
Hibernate: insert into search (creation_date, interval, keyword, last_search_date, name, platform_id, state, user_id) values (?, ?, ?, ?, ?, ?, ?, ?)
2021-11-06 17:40:30.376 WARN 4584 --- [legram Executor] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1064, SQLState: 42000
2021-11-06 17:40:30.376 ERROR 4584 --- [legram Executor] 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 'interval, keyword, last_search_date, name, platform_id, state, user_id) values (' at line 1
2021-11-06 17:40:30.380 ERROR 4584 --- [legram Executor] o.t.t.u.DefaultBotSession : could not execute statementorg.hibernate.exception.SQLGrammarException: could not execute statement
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:200) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.dialect.identity.GetGeneratedKeysDelegate.executeAndExtract(GetGeneratedKeysDelegate.java:57) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:43) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3195) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3801) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:84) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:645) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:282) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:263) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:317) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:330) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:287) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:123) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:194) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:179) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:75) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:93) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:636) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:629) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:624) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
at org.kasad0r.bot.MySQL.HibernateUtil.insert(HibernateUtil.java:36) ~[main/:na]
at org.kasad0r.bot.MyBot.onUpdateReceived(MyBot.java:155) ~[main/:na]
at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_202]
at org.telegram.telegrambots.meta.generics.LongPollingBot.onUpdatesReceived(LongPollingBot.java:27) ~[telegrambots-meta-5.3.0.jar:na]
at org.telegram.telegrambots.updatesreceivers.DefaultBotSession$HandlerThread.run(DefaultBotSession.java:317) ~[telegrambots-5.3.0.jar:na]
Caused by: 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 'interval, keyword, last_search_date, name, platform_id, state, user_id) values (' at line 1
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.25.jar:8.0.25]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.25.jar:8.0.25]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) ~[mysql-connector-java-8.0.25.jar:8.0.25]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092) ~[mysql-connector-java-8.0.25.jar:8.0.25]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040) ~[mysql-connector-java-8.0.25.jar:8.0.25]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1348) ~[mysql-connector-java-8.0.25.jar:8.0.25]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025) ~[mysql-connector-java-8.0.25.jar:8.0.25]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
... 27 common frames omitted
SQL request:
I think there's a mistake.
at org.kasad0r.bot.MySQL.HibernateUtil.insert(HibernateUtil.java:36) ~[main/:na]
at org.kasad0r.bot.MyBot.onUpdateReceived(MyBot.java:155) ~[main/:na]
Method
insert
:public static int insert(DataEntity entity) {
Session session = getSessionFactory().openSession();
session.beginTransaction();
int id = (Integer) session.save(entity);
session.getTransaction().commit();
session.close();
return id;
}
int id = (Integer) session.save(entity);
a mistake.searchEntity.setDayInterval(Integer.parseInt(msg.getText()));
//sendMsg("Sucess", msg.getChatId());
searchEntity.setUserByUserId(HibernateUtil.selectUser("from UserEntity where id = " + msg.getFrom().getId()).get(0));
int id = HibernateUtil.insert(searchEntity);
searchEntity.setId(id);
int id = HibernateUtil.insert(searchEntity);
Maybe a problem in the method, but I don't know.Method
SearchEntity
:package org.kasad0r.bot.MySQL;
import javax.jws.soap.SOAPBinding;
import javax.persistence.*;
import java.sql.Date;@Entity
@Table(name = "search", schema = "bot")
public class SearchEntity extends DataEntity {
private int id;
private String name;
private Date creationDate;
private Date lastSearchDate;
private String keyword;
private Integer dayInterval;
private byte state;
private PlatformEntity platformByPlatformId;
private UserEntity userByUserId;@Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name = "id", nullable = false) public int getId() { return id; } public void setId(int id) { this.id = id; } @Basic @Column(name = "name", nullable = true, length = 100) public String getName() { return name; } public void setName(String name) { this.name = name; } @Basic @Column(name = "creation_date", nullable = false) public Date getCreationDate() { return creationDate; } public void setCreationDate(Date creationDate) { this.creationDate = creationDate; } @Basic @Column(name = "last_search_date", nullable = true) public Date getLastSearchDate() { return lastSearchDate; } public void setLastSearchDate(Date lastSearchDate) { this.lastSearchDate = lastSearchDate; } @Basic @Column(name = "keyword", nullable = false, length = 100) public String getKeyword() { return keyword; } public void setKeyword(String keyword) { this.keyword = keyword; } @Basic @Column(name = "interval", nullable = true) public Integer getDayInterval() { return dayInterval; } public void setDayInterval(Integer dayInterval) { this.dayInterval = dayInterval; } @Basic @Column(name = "state", nullable = false) public byte getState() { return state; } public void setState(byte state) { this.state = state; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; SearchEntity that = (SearchEntity) o; if (id != that.id) return false; if (state != that.state) return false; if (name != null ? !name.equals(that.name) : that.name != null) return false; if (creationDate != null ? !creationDate.equals(that.creationDate) : that.creationDate != null) return false; if (lastSearchDate != null ? !lastSearchDate.equals(that.lastSearchDate) : that.lastSearchDate != null) return false; if (keyword != null ? !keyword.equals(that.keyword) : that.keyword != null) return false; if (dayInterval != null ? !dayInterval.equals(that.dayInterval) : that.dayInterval != null) return false; return true; } @Override public int hashCode() { int result = id; result = 31 * result + (name != null ? name.hashCode() : 0); result = 31 * result + (creationDate != null ? creationDate.hashCode() : 0); result = 31 * result + (lastSearchDate != null ? lastSearchDate.hashCode() : 0); result = 31 * result + (keyword != null ? keyword.hashCode() : 0); result = 31 * result + (dayInterval != null ? dayInterval.hashCode() : 0); result = 31 * result + (int) state; return result; } @ManyToOne @JoinColumn(name = "platform_id", referencedColumnName = "id", nullable = false) public PlatformEntity getPlatformByPlatformId() { return platformByPlatformId; } public void setPlatformByPlatformId(PlatformEntity platformByPlatformId) { this.platformByPlatformId = platformByPlatformId; } @ManyToOne @JoinColumn(name = "user_id", referencedColumnName = "id", nullable = false) public UserEntity getUserByUserId() { return userByUserId; } public void setUserByUserId(UserEntity userByUserId) { this.userByUserId = userByUserId; }
}
-
Caused by: 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 'interval, keyword, last_search_date, name, platform_id, state, user_id) values (' at line 1 at com.mysql.cj.jdbc.exceptions. SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.25.jar:8.0.25]
Reserved keywords at MySQL should be taken back to synthaxis.
@Column(name = "`interval`", nullable = true)