Lassen Sie Hibernate Instanzvariablen ignorieren, die nicht zugeordnet sind [duplicate]

Lesezeit: 3 Minuten

Benutzer-Avatar
diese

Ich dachte, Hibernate berücksichtigt nur Instanzvariablen, die mit kommentiert sind @Column. Aber seltsamerweise heute, als ich eine Variable hinzufügte (die keiner Spalte zugeordnet ist, nur eine Variable, die ich in der Klasse benötige), versucht sie, diese Variable als Spaltennamen in die Select-Anweisung aufzunehmen und wirft den Fehler –

Unbekannte Spalte „team1_.agencyName“ in „Feldliste“

Meine Klasse –

@Entity
@Table(name="team")
public class Team extends BaseObject implements Serializable {

@Id  @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@Column(length=50)
private String name;

@Column(length=10)
private String code;

@Column(name = "agency_id")
private Long agencyId;

private String agencyName; //note: not annotated.

}

FYI … Ich verwende die obige Klasse in einer anderen Klasse mit vielen zu vielen Zuordnungen

@ManyToMany(fetch = FetchType.EAGER) 
@JoinTable(
        name="user_team",
        joinColumns = { @JoinColumn( name="user_id") },
        inverseJoinColumns = @JoinColumn( name="team_id")
)    
public Set<Team> getTeams() {
    return teams;
}

Warum passiert das?!

  • sehr leid … ich bin neu in diesem. werde es für alle meine Beiträge tun! danke fürs erzählen.

    – he

    12. Januar 2011 um 14:51 Uhr

  • @Tunaki nein, das ist nicht genau das Duplikat der Frage “JPA schnellste Möglichkeit, ein Feld während der Persistenz zu ignorieren?” (stackoverflow.com/questions/1281952/…) Dieses Ticket handelt von Hibernate und das andere spricht stattdessen von JPA.

    – Yuci

    23. März 2017 um 15:19 Uhr

  • @hese hat Ihre Basisklasse einige Variablen? Wenn ja, werden sie vom Ruhezustand ignoriert oder berücksichtigt?

    – Shekhar Sahu

    28. Mai 2019 um 16:38 Uhr

Benutzer-Avatar
Skaffmann

JPA verwendet alle Eigenschaften der Klasse, sofern Sie sie nicht ausdrücklich mit kennzeichnen @Transient:

@Transient
private String agencyName;

Das @Column Die Anmerkung ist rein optional und dient dazu, den automatisch generierten Spaltennamen zu überschreiben. Außerdem die length Attribut von @Column wird nur beim automatischen Generieren von Tabellendefinitionen verwendet, hat keine Auswirkung auf die Laufzeit.

  • Sie können auch den Java-Modifikator verwenden transient anstelle der Anmerkung

    – Pstanton

    4. August 2019 um 23:54 Uhr

  • Ist es möglich, dass die Variable nur beim Persistieren ignoriert werden soll, aber beim Holen der Daten aus der DB das Feld berücksichtigt werden kann ?

    – Abdel Rahmane

    22. September 2019 um 19:04 Uhr

  • Importieren Sie dank der Antwort von @CodeMed unten nicht das falsche Paket: import javax.persistence.Transient;

    – AbhängigkeitHell

    19. Juni 2020 um 10:03 Uhr

Benutzer-Avatar
CodeMed

Für Leute, die diesen Beitrag über die Suchmaschinen finden, ist eine weitere mögliche Ursache für dieses Problem der Import der falschen Paketversion von @Transient. Stellen Sie sicher, dass Sie importieren javax.persistence.transient und nicht irgendein anderes Paket.

  • Danke. Ich habe mich gefragt, ob es Bohnen oder Beharrlichkeit sein sollten.

    – Nassir

    10. November 2014 um 20:14 Uhr

  • danke, habe org.springframework.data.annotation.Transient verwendet und war verwirrt, warum es nicht funktioniert.

    – Rudi

    3. August 2017 um 3:37 Uhr

  • Danke!!! lustig, dachte, brauche ich wirklich eine weitere Google-Suche, die akzeptierte Antwort war so wahrscheinlich …

    – tom

    5. November 2018 um 22:28 Uhr

Benutzer-Avatar
Saumyaraj

Platzierung @Transient on getter mit privatem Feld hat bei mir funktioniert.

    private String name;

    @Transient
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

  • Das Setzen von @Transient auf Getter-Ebene hat auch für mich funktioniert.

    – Coretechie

    30. März 2017 um 9:16 Uhr

  • Unterscheidet es sich nicht von der Deklaration der Variablen @Transient?

    – ADTC

    23. März 2018 um 0:36 Uhr

  • @ADTC Abhängig von den verwendeten Bibliotheken scheuen sich einige vor Anmerkungen zu Getter / Settern, andere nicht (haben dies kürzlich bei Moxy und Jackson bemerkt; Moxy ist großartig, weil es ohne Grund stillschweigend fehlschlägt), einige mögen es nicht, wenn sie gemischt werden (zwischen Eigenschaften und Getter/Setter). Ich muss es lieben.

    – Shawn

    26. April 2018 um 20:50 Uhr


1355500cookie-checkLassen Sie Hibernate Instanzvariablen ignorieren, die nicht zugeordnet sind [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy