2015-10-07 11 views
5

Ich benutze Hibernate 4.1.9. Mein Code ist@Transient arbeitet nicht im Winterschlaf

@Transient 
private String ldapIdTemp; 

Paket ist

import javax.persistence.Transient; 

Noch in Hibernate-Abfrage, es nicht funktioniert und in der Abfrage das Attribut setzen.

Teil der Abfrage-Schnipsel (assetasset0_.ldapIdTemp als ldapIdTemp16_0_,)

Ich bin nicht sicher, was ich falsch mache.

Antwort

7

Können Sie versuchen, Setter und Getter für das Feld zu schaffen und die get-Methode mit @Transient, mit Anmerkungen versehen, wie folgt:

private String ldapIdTemp; 

@Transient 
public String getLdapIdTemp() { 
    return ldapIdTemp; 
} 

public void setLdapIdTemp(String ldapIdTemp) { 
    this.ldapIdTemp = ldapIdTemp; 
} 
+1

das war genau mein Problem, danke –

4

Viel hängt davon ab, wie Sie „integriert“ dieses Feld in Ihrer Entity oder Klassenhierarchie. Darüber hinaus Feld vs. Eigenschaft-Access konnte ein Problem für Ihre Einstellung verursachen. Eine detaillierte Erklärung finden Sie unter post.

In Ihrem Fall könnte ich mich vorstellen, dass Sie entweder:

  1. gemischtes Feld und Eigentum-Zugang in Ihrem Erbe Einheit Strategie
  2. Verwendung XML-basierte Konfiguration für Hibernate in Ihrer Anwendung.

In beiden Fällen sind die JPA 2.0/2.1 specification eindeutig in Abschnitt 2.3.1 heißt es:

Es ist ein Fehler, wenn ein Standard-Zugriffstyp nicht bestimmt werden kann, und ein Zugriffstyp nicht explizit angegeben wird mittels Annotationen oder der XML-Deskriptor. Das Verhalten von Anwendungen Mischen die Platzierung von Anmerkungen zu Feldern und Eigenschaften innerhalb einer Entität Hierarchie ohne explizite Angabe der Access Annotation ist undefined.

Bitte überprüfen Sie, dass Ihre persistent Entity Klassen haben entweder Feld OR Eigenschaft -basierte Anmerkungen.