JPA / Hibernate是否支持自定义类型?我想通过扩展BigDecimal,这足以让Hibernate将我的类型视为BigDecimal。似乎并非如此。有没有办法让这项工作成功?如果可能的话,我宁愿避免使用@Embedded和@Embeddable。
类型:
public class Money extends BigDecimal {
public Money(String type) {
super(type);
}
}
实体:
@Entity
@Table(name = "Person")
public class Person implements java.io.Serializable {
private Integer id;
private Money inPocket;
@Column(name = "InPocket")
public Money getInPocket() {
return inPocket;
}
public void setInPocket(Money amount) {
this.amount = amount;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
当我尝试这个时,我得到以下内容:
在日志中:
SEVERE: String or binary data would be truncated.
异常消息
org.hibernate.exception.DataException: could not insert: [Person]
答案 0 :(得分:1)
JPA不支持自定义类型,但hibernate支持自定义类型。就其性质而言,自定义类型是特定于供应商的。
这是hibernates自定义类型(AKA用户类型),它方便地有一个钱类型的例子: http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch06.html#types-custom-ut