webentwicklung-frage-antwort-db.com.de

ruhezustand - Anweisung konnte nicht ausgeführt werden; SQL [n/a] - Speichern von verschachtelten Objekten

Ich versuche ein verschachteltes Objekt mit dem Ruhezustand zu speichern und erhalte could not execute statement; SQL [n/a] Exception

CODE

@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 { }

Mit RazorSQL habe ich gesehen, dass hibernateMapPoint und CommissionFee als VARBINARY definiert.

Was ich nicht verstehen kann, ist die Tatsache, dass Hibernate es schafft, es zu speichern, wenn commissionFeeInfo nicht vorhanden ist. Es hat kein Problem mit dem Speichern von MapPoint

Hat jemand eine Ahnung, was ich falsch mache?

UPDATE

Ich habe herausgefunden, dass das Objekt ohne Probleme gespeichert wird, wenn alle Attribute von CommissionFeeInfo mit Ausnahme von agentFeeInfonull sind. Wenn eines der anderen Attribute != null ist, treten die Fehler auf. 

UPDATE 2

Ich habe den Typ aller Attribute von CommissionFeeInfo in String geändert und das Objekt wird ohne Probleme gespeichert, aber ich kann die Attribute nicht als String zulassen.

5
Paul

Ich habe das Problem durch Hinzufügen von Einstellungen gelöst 

@Column(name = "commission_fee_info", columnDefinition = "LONGVARBINARY")

als Annotation für das Feld commisionFeeInfo in der Klasse Listing

4
Paul

Für mich,

@Column(columnDefinition="text")

löst mein Problem.

0
SHIVA