объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом, используя спящий пространственный - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь выполнить этот запрос:

StringBuffer sb = new StringBuffer();
sb.append("select p from PointsEntity p " + "where within(p.coordinates,:polygon) = true");

Но у меня есть исключение:

org.hibernate.TransientObjectException: объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом: com.gisapp.springboot.backend.apirest.models.entity.PolygonEntity

Это PolygonEntity:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "user_id")
private Long userId;

@Column(name = "user_email")
private String userEmail;

@Column(name = "point_name")
private String pointName;

@Column(name = "coordinates")
private Polygon coordinates;

Я прочитал возможное решение здесь , но, наблюдая за объектом, решение уже реализовано в UserEntity, который содержит коллекцию многоугольника:

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private List<PointsEntity> pointsList;

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private List<PolygonEntity> polygonsList;

Почему у меня есть это исключение?

1 Ответ

0 голосов
/ 02 июля 2019

В конце я использовал другой способ использования метода inside.

Я создал временную таблицу и сущность для сохранения многоугольника, позже я выполню этот запрос:

StringBuffer sb = new StringBuffer();
        sb.append("select p from PointsEntity p, TempPolygonEntity t "
        + "where within(p.coordinates, t.coordinates) = true"); 

Многоугольник сохраняется и позже удаляется после использования.

...