Начал изучать Java и Spring framework. Делаю задание, часть которого - хранение набора точек с привязкой к какой-то площади (не важно к какой, к вопросу это не относится) и поиск ближайшей из набора к заданной точке.
Создал такую сущность.
package com.parkinghelper.parker.domain;
import lombok.Data;
import org.springframework.data.geo.Point;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
@Entity
@Table(name = "parking_place")
@Data
public class ParkingPlace {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private Point coordinate;
private Boolean isFree;
@ManyToOne
@JoinColumn(name = "area")
private ParkingArea area;
public ParkingPlace() {
}
}
Столкнулся с проблемой, что Sping data создает таблицу с полем точки (coordinate) сохраняет как Bytea
. Соответственно в запросе обработать этот набор не получается.
В самом postgresql есть тип Point и если предварительно создать таблицу с этим типом, то hibernate (если я правильно понял, то именно эта реализация JPA отвечает за работу с БД. Подправьте если это не так) не может подключиться к такой таблице созданной сущностью.
При попытке взять данные из БД выпадает исключение
"could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize"
Полный trace выглядит страшно.
Собственно вопрос следующий. Почему такая несогласованность типов у spring.data и postgresql. Как с этим бороться (хотелось бы использовать стандартный тип Point из БД, т.к. нужны фищки для работы с ним в запросе)?
Быть может версии не стыкуюстся или же мне нужно использоваться другую СУБД, например Oracle?
В интернете толком не нашел информации по этому вопросу, только то, что можно использовать PostGis для таких целей.
Проперти следующие:
spring.datasource.url=jdbc:postgresql://localhost/postgres
spring.datasource.username=postgres
spring.datasource.password=123456
spring.jpa.generate-ddl=true
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
server.port=8080
spring.jpa.show-sql=true
Репозиторий:
@Repository
public interface ParkingPlaceRepository extends JpaRepository<ParkingPlace,Long> {
}
Версия Postgresql: PostgreSQL 11.1, compiled by Visual C++ build 1914, 64-bit
Версия java: 10.0.2
Не надо привязываться к классам из Spring Data. Поскольку данные классы не могут быть энтитями в таком виде как они есть, и нельзя соответственно конвертировать их в объекты.
Перед тем как использовать классы в сущьностях убедитесь что они имплементируют java.util.Serializable
интерфейс.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Могу ли я в контексте Spring + Hibernate сделать простой sql запрос и получить список элементов ( как в JDBC - ResultSet) для запроса данных из таблицы, не входящей...
Пишу програмку на джаве с использованием vk api, и проблема с методом messagessend