Я пытаюсь сохранить вложенный объект, используя спящий режим, и я получаю could not execute statement; SQL [n/a] Exception
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
То, что я не могу понять, это тот факт, что спящий режим сохраняет его при отсутствии комиссии. У него нет проблем с сохранением MapPoint
Есть ли у кого-нибудь идеи о том, что я делаю неправильно?
UPDATE
я узнал, что, если все атрибуты CommissionFeeInfo
кроме agentFeeInfo
являются null
, объект будет сохранен без проблем. Если один из других атрибутов - != null
, возникают ошибки.
UPDATE 2
Я изменил тип всех атрибутов CommissionFeeInfo
в String
и объект будет сохранен без проблем, но я не могу позволить атрибуты String
.
Можете ли вы объяснить, больше ошибок у вас есть? Есть какое-либо вложенное исключение? Любой код ошибки SQL? –
@ RicardoVila Да, есть вложенные исключения 'java.sql.SQLDataException: исключение данных: строковые данные, правильное усечение; table: столбец LISTING: COMMISSION_FEE_INFO' – Paul
, а также 'org.springframework.dao.DataIntegrityViolationException: не удалось выполнить оператор; SQL [n/a]; Вложенное исключение - org.hibernate.exception.DataException: невозможно выполнить оператор' и 'sql = n/a' – Paul