我正在尝试使用 hibernate 保存嵌套对象,但收到无法执行语句; SQL [不适用] 异常
代码
@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 { }
使用 RazorSQL
我看到 hibernate
将 MapPoint
和 CommissionFee
定义为 VARBINARY
我无法理解的是,当 commissionFeeInfo 不存在时,hibernate 设法保存了它。保存MapPoint
有人知道我做错了什么吗?
更新
我发现如果 CommissionFeeInfo
的所有属性(agentFeeInfo
除外)都是 null
,则该对象将被毫无问题地保存。如果其他属性之一是 != null
,则会发生错误。
更新 2
我把 CommissionFeeInfo
的所有属性的类型都改成 String
并且对象会被保存没有问题,但是我不能让属性为 String
。
最佳答案
我通过添加设置解决了这个问题
@Column(name = "commission_fee_info", columnDefinition = "LONGVARBINARY")
作为 Listing
类中字段 commisionFeeInfo
的注解
关于java - hibernate - 无法执行语句; SQL [不适用] - 保存嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31833337/