我需要将地理空间信息(具体而言是“点”)添加到 MySQL 数据库(v5.5.28)的条目中。我尝试使用简单的代码将创建的列“位置”映射到我的 java EJB 实体 ServiceInfo 的相应属性:
@Column(name = "location")
private com.vividsolutions.jts.geom.Point location;
但是,这会导致以下错误:
Exception [EclipseLink-66] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: Could not deserialize object from byte array.
Internal Exception: java.io.StreamCorruptedException: invalid stream header: 00000000
Mapping: org.eclipse.persistence.mappings.DirectToFieldMapping[location-->ServiceInfo.location]
Descriptor: RelationalDescriptor(ies.persistence.entity.ServiceInfo --> [DatabaseTable(ServiceInfo)])
at org.eclipse.persistence.exceptions.DescriptorException.notDeserializable(DescriptorException.java:1218)
at org.eclipse.persistence.mappings.converters.SerializedObjectConverter.convertDataValueToObjectValue(SerializedObjectConverter.java:72)
...
我认为问题在于 java mysql 连接器(v5.1.22)不支持地理空间信息,这让我感到惊讶,因为数据库支持。有人可以确认是这种情况,还是告诉我我可能做错了什么并指出正确的方向?
我在 Netbeans 7.2 中工作,使用 JDK 1.7 和 GlassFish Server 3.1.2