谢谢大家的回复。不幸的是java.awt.Point类使用Integer,所以在我的情况下它是无用的。解决它的最简单方法是使用Point2D.Doublewhich implements Serializable(但如果您不想更改类定义,则UserType或CompositeUserType的定义更方便)。所以,简单的解决方案:
@Entity
@Table(name = "my_class_table")
public class MyClass {
private String aliasId;
private Point2D.Double field;
public Point2D.Double getField() {
return field;
}
public void setField(Point2D.Double field) {
this.field = field;
}
public String getAliasId() {
return aliasId;
}
public void setAliasId(String aliasId) {
this.aliasId = aliasId;
}
}
但我的最终目标是创建一个具有有序点列表的类。如果有人感兴趣,这里有一个代表线的类的例子:
@Entity
public class Line {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idDb", unique = true, nullable = false)
private int id;
@ElementCollection
@CollectionTable(name="points_table", joinColumns = @JoinColumn(name="idDb"))
@IndexColumn(name = "idx")
@Column(name="point_val")
private List<Point2D.Double> points = new ArrayList<Point2D.Double>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public List<Point2D.Double> getPoints() {
return points;
}
public void setPoints(List<Point2D.Double> points) {
this.points = points;
}
}