代码之家  ›  专栏  ›  技术社区  ›  nanda

使用枚举作为ID

  •  5
  • nanda  · 技术社区  · 15 年前

    使用JPA,我们可以将枚举定义为实体的ID吗?

    我试过以下方法:

    public enum AssetType {
       ....
    }
    
    @Entity
    @IdClass(AssetType.class)
    public class Adkeys {
    
       private AssetType type;
    
       @Id
       @Enumerated(EnumType.STRING)
       @Column(nullable = false)
       public AssetType getType() {
          return type;
       }
    
    }
    

    使用OpenJPA,它抱怨:

    org.apache.openjpa.persistence.argumentexception:类型“class a a.adkeys”指定的ID类“class a a.assettype”没有公共的无参数构造函数。

    所以我的问题是:

    • 我们是否可以使用枚举作为JPA上实体的ID?(即OpenJPA中有一个bug)
    • 还是我在某个地方犯了错误?
    • 有没有解决这个问题的方法?
    4 回复  |  直到 14 年前
        1
  •  7
  •   Bozho    15 年前

    String int AssetType.FOO.name() AssetType.FOO.ordinal()

    class.isEnum()

        2
  •  4
  •   Aaron Digulla    15 年前

    int long new

        3
  •  2
  •   user250343    14 年前
        4
  •  0
  •   Alexander Torstling    15 年前

    推荐文章