【问题标题】:Persist List of Embeddable in an Entity在实体中持久化可嵌入列表
【发布时间】:2013-09-01 13:25:33
【问题描述】:

我想在实体中保留一个可嵌入对象列表。但没有为列表中的对象创建新表。

我想以将坐标列表序列化为字符串并保存在实体 Entity_A 的名为“坐标”的列中的方式保存实体。

我知道我不应该这样做,因为这是糟糕的设计。但在这种情况下,它是必需的。

我的尝试:

@Entity
class Entity_A implements Serializable {
    //... 

    private List<Coordinate> coordinates;
}

@Embeddable
class Coordinate implements Serializable {
    private Float lat;
    private Float lng;
    private Float alt;
}

它不起作用。我没有收到任何错误。

你有什么想法吗?

编辑:

坐标必须是可嵌入的,因为我在别处使用它。

【问题讨论】:

  • 除非您在其他地方使用 Coordinate,否则不要将其嵌入,并使用 @Basic 注释列表并使用可序列化的集合类型而不是 List 类型。这将导致 JPA 将集合直接序列化到字段。
  • 它需要嵌入,因为我在其他地方使用它。

标签: java jpa eclipselink glassfish-4 jpa-2.1


【解决方案1】:

使用 JPA 2.1 可以:

使用@ElementCollection 注释坐标字段

@ElementCollection    
private List<Coordinate> coordinates;

http://en.wikibooks.org/wiki/Java_Persistence/ElementCollection上查看更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多