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
Вот такая ошибка:
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
Полностью ошибка:
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 statement
org.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 запрос:
думаю связано ошибка
at org.kasad0r.bot.MySQL.HibernateUtil.insert(HibernateUtil.java:36) ~[main/:na]
at org.kasad0r.bot.MyBot.onUpdateReceived(MyBot.java:155) ~[main/:na]
метод 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); ошибка показывает хз
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); может проблема в метод но я не знаю
метод 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;
}
}
Ответы (1 шт):
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]
Резервированные ключевые слова в MySQL надо брать в обратные кавычки согласно синтаксису
@Column(name = "`interval`", nullable = true)
