HIbernate:无法确定类的类型

时间:2015-10-10 12:47:34

标签: java hibernate

这是我的实体类:

@Entity
public class User implements Serializable {
    @Column(name = "instagram_token")
    private Token instagramToken;

    @Column(name = "paypal_credential")
    private SignatureCredential signatureCredential;

Token和SignatureCredential是第三方类。 Hibernates确定令牌的类型,但不能对SignatureCredential做同样的事情,我不明白为什么。

public class Token implements Serializable {
    private static final long serialVersionUID = 715000866082812683L;
    private final String rawResponse;
    private final String secret;
    private final String token;


public class SignatureCredential implements ICredential {
    private String userName;
    private String password;
    private String applicationId;
    private String signature;
    private ThirdPartyAuthorization thirdPartyAuthorization;

public interface ThirdPartyAuthorization {

}

1 个答案:

答案 0 :(得分:3)

您的令牌实体实现Serializable,这是实体属性的有效类型。另一方面,SignatureCredential没有实现Serializable,也没有Hibernate认可的任何类型都是有效的实体类型。除非,ICredential接口扩展Serializable接口(我在代码中没有看到)。

请参阅:https://docs.jboss.org/hibernate/orm/5.0/manual/en-US/html/ch05.html#mapping-types

在JPA中,这里是可以映射的有效简单类型:

  • 原始Java类型:byte,int,short,long,boolean,char,float,double
  • 原始Java类型的包装类:字节,整数,短,长,布尔,字符,浮点数,双
  • 字节和字符数组类型:byte [],Byte [],char [],Character []
  • 大型数字类型:java.math.BigInteger,java.math.BigDecimalStrings:
  • java.lang.String中
  • Java时间类型:java.util.Date,java.util.Calendar
  • JDBC时态类型:java.sql.Date,java.sql.Time,java.sql.Timestamp
  • 枚举类型:任何系统或用户定义的枚举类型
  • 可序列化对象:任何系统或用户定义的可序列化类型