JPA @ElementCollection注释是否始终产生一对多的关系?

时间:2011-09-29 03:49:28

标签: java jpa orm persistence jpa-2.0

对于这个问题,请考虑以下示例:

@Entity
public class File {
    public static enum Permission { READABLE, WRITEABLE, EXECUTABLE }

    @ElementCollection
    @Enumerated(EnumType.ORDINAL)
    Set<Permission> permissions;

    // Omitted
}

假设枚举值以序数形式存储,JPA是否总是为此集创建一个额外的表?我是否可以改变这一点,以使其不是一对多关系,即使用列而不是额外的表?

感谢。

1 个答案:

答案 0 :(得分:1)

  1. “one-to-many”是一种实体关联。这是一组值,因此它不能是一对多的。
  2. 实际上不可能在一行中的单个字段中存储多个值,所以不,你不能这样做。
  3. 基本上你要求的是一个基本属性,比如private String permissions;。那将在同一个表中使用单个列。
  4. 如果您想要将多个值打包到单个值中,例如在Hibernate保存时将所有权限手动组合成逗号分隔的字符串,您将需要编写custom UserType来执行此操作。