我正在尝试保留我的一个JPA / EclipseLink模型,location
类型的一个属性org.postgresql.geometric.PGpoint
未正确插入。
我的模型看起来像这样:
@Entity
@NamedQuery(name="Entity.findAll", query="SELECT * FROM Entity e")
public class Entity {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="name")
private String name;
@Column(name="location")
private PGpoint location;
@Column(name="date")
private Timestamp date;
@Column(name="user_id")
private Integer user_id;
/* getters and setters */
我得到了这个例外:
Internal Exception: org.postgresql.util.PSQLException:
ERROR: column "location" is of type point but expression is of type bytea
我启用了查询日志记录,并确定问题似乎是由格式错误的SQL引起的。 location
后面的所有属性似乎都组合在一起成为bytea
数组。具体来说,JPA正在尝试执行这样的插入:
INSERT INTO ENTITY (name, location, date, user_id)
VALUES ("my_name", [B26bf8d677, "2017-05-12 12:33:00.0", 1])
也就是说,它似乎试图将最后三个属性全部插入location
列。
我还尝试将location
存储为String
类型,它适用于我的其他模型之一,它只读取数据库中的位置值并且永远不会插入它们。这似乎解决了格式错误的SQL问题,因为插入内容如下所示:
INSERT INTO ENTITY (name, location, date, user_id)
VALUES("my_name", "POINT(42,24)", "2017-05-12 12:33:00.0", 1)
然而,由于我得到了这个例外,它实际上并不起作用:
Internal Exception: org.postgresql.util.PSQLException:
ERROR: column "location" is of type point but expression is of type character varying
如何正确插入location
属性?