java - hibernate - 无法执行语句; SQL [不适用] - 保存嵌套对象

标签 java hibernate exception save hsqldb

我正在尝试使用 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 我看到 hibernateMapPointCommissionFee 定义为 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/

相关文章:

java - setParameter 和 hibernate 中设置特定类型参数的区别

mysql - 查询问题之间的 JPA hibernate 日期

java - 我的异常处理中出现无限循环?

java - 更改 Android 上的时间/日期设置?

java - 访问jar中的资源文件夹

java - apache FileUtils.writeLines() 是否可以 append 到文件(如果存在)

java - Hibernate 在选择查询中生成过多的连接

Java:创建其构造函数可能引发异常的静态类成员

c++ - 未处理的异常访问冲突读取位置/使用结构 vector

java - 使用抽象创建对象失败,可能是我看不到的简单修复