2016-07-21 8 views
0

Ich habe ein Embeddable-Modell (Es ist keine Entität), die nur Getters hat (Ich möchte nicht Setter, weil es Attribute sind behoben.) Ich habe dieses Modell in einer anderen Entität eingebettet.Wie Abfrage eingebettete Klasse in Hibernate?

Jetzt ist meine Anforderung, Wenn ich GET-Abfragen in der Entitätsklasse, möchte ich einige Parameter verwenden, die im "Embeddable-Modell" definiert sind. Jetzt ist das Problem, da das einbettbare Modell keine separate Tabelle hat, konnte ich die Datenbank nicht abfragen.

Wie kann ich das in Hiberanate angehen?

Fähiges Klasse

@Embeddable 
public class Observation { 


    @Column(name = "CREATED") 
    private LocalDateTime created; 

    @NotNull 
    @Column(name="O_CODE") 
    private String o_code; 

    public String getCode() { 
     return o_code; 
    } 
    public String getCreated() { 
     return created; 
    } 
} 

Entity Klasse

@Table(name = "field_observation", uniqueConstraints = @UniqueConstraint(columnNames = "code")) 
public class FieldObservation { 

private Long id; 

    @Embedded 
    private Observation observation = null; 


    getObservation{} 
    setObservation{} 

......... }

GET rufen

Antwort

0

Hibernate: Unterstützt Sammlungen von Embeddables über die @CollectionOfElements Annotation und JPA 2.0 ElementCollection Zuordnung.

Einbettbare objects kann nicht direkt abgefragt werden, aber sie können im Kontext ihrer Eltern abgefragt werden. In der Regel empfiehlt es sich, das übergeordnete Element auszuwählen und auf das eingebettete Element vom übergeordneten Element zuzugreifen. Dadurch wird sichergestellt, dass das Embeddable mit der persistence context registriert wird. Wenn das eingebettete Objekt in einer Abfrage ausgewählt wird, sind die resultierenden Objekte detached und Änderungen werden nicht verfolgt.

Ex. select fieldObservation.o_code from FieldObservation fieldObservation where id= :param.

+0

Ich versuche es, aber ich bekomme eine Ausnahme. Ich habe eine weitere Frage gestellt. Weißt du, warum Hibernate diesen Fehler wirft? http://stackoverflow.com/questions/38495099/hibernate-could-not-resolve-property-of-the-embedded-class?noredirect=1#comment64391083_38495099 – Ratha

+0

Ich kann die Getter-Methode für RawCode nicht sehen. Könnten Sie versuchen, Getter für das gleiche hinzuzufügen. –

+0

fügen Sie Ihre SQL-Abfrage hinzu ... es sieht aus, als ob etwas mit dem Feldnamen der Entität nicht stimmt. –