hibernate - 无法执行语句; SQL [n/a] - 保存嵌套对象

Pau*_*aul 5 java hibernate exception save hsqldb

我正在尝试使用hibernate保存嵌套对象,我收到了 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 { }
Run Code Online (Sandbox Code Playgroud)

使用RazorSQL我看到的hibernate定义MapPointCommissionFeeasVARBINARY

我无法理解的是,当invFinInfo不存在时,hibernate设法保存它.保存没有问题MapPoint

有没有人知道我做错了什么?

UPDATE

我发现,如果所有属性CommissionFeeInfo以外agentFeeInfonull,对象将被保存没有问题.如果是其他属性之一,!= null则会发生错误.

更新2

我改变的所有属性的类型CommissionFeeInfo进入String和对象将被保存没有问题,但我不能让的属性String.

Pau*_*aul 5

我通过添加设置解决了问题

@Column(name = "commission_fee_info", columnDefinition = "LONGVARBINARY")
Run Code Online (Sandbox Code Playgroud)

作为commisionFeeInfo类中字段的注释Listing