2017-07-10 3 views
3

Ich habe Settlement Einheit@Transient im Frühjahr Daten nicht funktioniert

@Entity 
@Table(name = "settlement") 
public class Settlement { 

    @ManyToOne 
    @JoinColumn(name = "subscription_x_product_id") 
    private ProductSubscription productSubscription; 

die

@Entity 
@Table(name = "subscriptionproduct") 
public class ProductSubscription { 
    @ManyToOne 
    @JoinColumn(name = "product_id") 
    private Product product; 

zu ProductSubscription Unternehmen verbunden, die

@Entity 
public class Product { 
    @Transient 
    private String enabled; 

in Product Einheit Product Unternehmen verbunden Ich habe Feld enabled welches mit @org.springframework.data.annotation.Transient annotiert wurde. auch habe ich Repository

public interface SettlementRepository extends JpaRepository<Settlement, Integer> 

wenn ich SettlementRepository.findAll(); es Ausnahme Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'enabled'.

geben nennen Wie kann ich ignorieren die enabled Feld von der DB geladen?

+0

Haben Sie eine Anmerkung auf dem Setter von 'enabled'? – Jens

+0

@Jens Nein, ich habe keine Anmerkungen auf dem Setter oder dem Getter. –

Antwort

6

Ich fand die Lösung, das Problem war in Annotation @org.springframework.data.annotation.Transient, sobald ich zu @javax.persistence.Transient wechselte es funktionierte gut.

+0

Ich habe das gleiche Problem, aber ich war '@ Transient' von '@ javax.persistence.Transient' von Anfang an, aber immer noch kein Erfolg. Ich speichere die Entität und rufe die Methode get für das zurückgegebene Objekt auf, und der Wert wurde beibehalten. Hast du etwas anderes gefunden? Vielen Dank. – fabioresner

+1

Für weitere Leser funktioniert die Annotation tatsächlich, aber da ich sie in einem '@ Transactional'-Test verwende, scheint das Spring-Repository das Objekt nicht zu aktualisieren (das gespeicherte Objekt und die vom Repository zurückgegebenen Objekte haben die gleiche Objekt-ID). Das Feld wurde also nicht in die Datenbank geschrieben, aber das Repository gibt es immer noch zurück, selbst wenn ich findOne aufruft und es einer neuen Variablen zuweist. Ich weiß immer noch nicht, wie ich es beheben kann. – fabioresner

+0

@fabioresner etwas Fehler in Ihrem enitty (für mich hatte ich falsche \ UniqueConstraint Name) und Sie müssen Abfrage in XML-Datei wie folgt definiert:

Verwandte Themen