我正在尝试使用休眠保存嵌套对象,我收到 could not execute statement; SQL [n/a] Exception
代码
@Entity
@Table(name = "listing")
@Inheritance(strategy = InheritanceType.JOINED)
public class Listing implements Serializable {
@Id
@Column(name = "listing_id")
private String listingId;
@Column(name = "property_type")
private PropertyType propertyType;
@Column(name = "category")
private Category category;
@Column(name = "price_currency")
private String priceCurrency;
@Column(name = "price_value")
private Double priceValue;
@Column(name = "map_point")
private MapPoint mapPoint;
@Column(name = "commission_fee_info")
private CommissionFeeInfo commissionFeeInfo;
}
public class MapPoint implements Serializable {
private final float latitude;
private final float longitude;
}
public class CommissionFeeInfo implements Serializable {
private String agentFeeInfo;
private CommissionFeeType commissionFeeType;
private Double value;
private Double commissionFee;
}
public enum CommissionFeeType implements Serializable { }
Using RazorSQL
I saw that hibernate
defines MapPoint
and CommissionFee
as VARBINARY
我无法理解的是,当 commissionFeeInfo 不存在时,hibernate 设法保存了它。保存没问题 MapPoint
有谁知道我做错了什么?
更新
我发现如果 CommissionFeeInfo
的所有属性除了 agentFeeInfo
是 null
,对象将被毫无问题地保存。如果其他属性之一是 != null
,则会发生错误。
更新 2
我将 CommissionFeeInfo
的所有属性的类型更改为 String
并且对象将毫无问题地保存,但我不能让属性为 String
原文由 Paul 发布,翻译遵循 CC BY-SA 4.0 许可协议
我通过添加设置解决了问题
作为类中字段
commisionFeeInfo
的注释Listing