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]
JPA不支持自定义类型,但是Hibernate确实可以。从本质上讲,自定义类型是特定于供应商的。
这是Hibernates自定义类型(又称用户类型),它具有货币类型的示例:http://docs.jboss.org/hibernate/orm/4.3/manual/en-en-us/html/ch06.html#types-custom--ut-ut