JPA / Hibernate无法确定类型

时间:2016-03-24 19:26:27

标签: java hibernate jpa

我现在很长一段时间都在努力解决这个问题,我真的希望我能在这里找到一些帮助。

我使用了一个复合主键类AssociationKey,它由类Association使用。密钥类中的id也是自定义类。当我尝试运行代码时,我收到错误消息:

"Could not determine type for: IClassB, at table: Association, for columns: [org.hibernate.mapping.Column(ClassB)]"

我还尝试在Class Association和ClassB中使用ManyToOne和OneToMany注释。但后来我得到了tpyes的错误 不正确的:

The attribute matching the ID class attribute ClassB does not have the correct type IClassB

是否无法在复合主键中将自定义类用作Id?

@Entity
@IdClass(AssociationKey.class)
public class Association implements IAssociation {

    @Id
    private IClassA classA;
    @Id
    private IClassB classB;
    ...
}


public class AssociationKey implements IAssociationKey, Serializable {

    public IClassA classA;
    public IClassB classB;

    public boolean equals() {..}
    public int hashCode() {..}
}


@Entity
public class ClassB implements IClassA {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private List<IAssociation> associations;
}

1 个答案:

答案 0 :(得分:1)

我认为您的问题在于您的主键定义。复合主键由自定义Java类组成。但JPA规范陈述如下:

  

复合主键的简单主键或字段或属性应为以下之一   types:任何Java原始类型;任何原始包装类型; java.lang.String中;   java.util.Date; java.sql.Date; java.math.BigDecimal的; java.math.BigInteger中。