Я пытаюсь сохранить данные Point, используя Hibernate в Mysql. Но я не могу понять, что я делаю не так?
Я использую hibernate 5.3.6, jts 1.14, mysql-connector-5.1.18.
База данных имеет три поля id, name и curr_loc с типом int, varchar и point соответственно
Используемый мной диалект гибернации - org.hibernate.dialect.MySQLDialect.
Это класс сущности
import com.vividsolutions.jts.geom.Point;
@Entity
@Table(name = "location")
public class Location {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
@Column(name = "curr_loc")
private Point curr_loc;
//getters and setters
}
Это код в основном методе класса SaveLocation, который хранит данные, используя hibernate
public static void main(String args[]){
SessionFactory factory = new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(Location.class)
.buildSessionFactory();
Session session = factory.getCurrentSession();
GeometryFactory geometryFactory = new GeometryFactory();
Point point = geometryFactory.createPoint( new Coordinate( 10, 5 ) );
Location tempLocation = new Location("AMD", point);
session.beginTransaction();
session.save(tempLocation);
session.getTransaction().commit();
}
Когда я пытаюсь использовать MySQLSpatial56Dialect , это выдает мне эту ошибку:
Не удалось получить соединение с метаданными запроса: невозможно разрешить имя [org.hibernate.dialect.MySQLSpatial56Dialect] в качестве стратегии [org.hibernate.dialect.Dialect]
Исключение в потоке "main" org.hibernate.service.spi.ServiceException: невозможно создать запрошенный сервис [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
Также, если я сохраню диалект как MySQLDialect , а затем попытаюсь сохранить данные, я получаю следующую ошибку:
ОШИБКА: усечение данных: невозможно получить объект геометрии из данных, отправленных в поле GEOMETRY
Причина: com.mysql.jdbc.MysqlDataTruncation: Усечение данных: Невозможно получить объект геометрии из данных, отправляемых в поле GEOMETRY
Подскажите, пожалуйста, что я делаю не так? Почему я не могу использовать MySQLSpatial56Dialect. Что еще более важно, как правильно сохранить точку в базе данных, используя hibernate. Нет подходящего примера для реализации того же. Я новичок в спящем режиме и не могу решить эту проблему.