2011-01-08 9 views
2

Ist es möglich, das Ergebnis einer Aggregatabfrage einem Feld in einem Hibernate-Backed Domain-Objekt zuzuordnen?Ergebnis der Aggregatabfrage dem Hibernate-Objekt zuordnen

Zum Beispiel: Wenn ich ein Auto zum Gegenstand haben, die wie folgt aussieht - ich möchte das carCount Feld/Eigenschaft zu der Gesamtzahl aller Autos in meinem Persistenzspeicher

@Entity 
public class Car { 
    @Id 
    private int id; 
    @Column 
    private String carName; 
    private int carCount; 
    ---Getters/Setters--- 
} 

ist das möglich?

ich in der Hibernate Dokumentation geschaut habe, kann ich die Abfrage ausführen, aber ich sehe nicht, wo ich diesen Wert auf den „carCount“

Dank einstellen.

+1

Nur ein Kommentar: carCount ist * nicht * eine Eigenschaft für eine bestimmte Instanz. Es ist eine Eigenschaft, die sich auf die Auto-Klasse bezieht. Also ist es besser geeignet, eine "statische" Eigenschaft zu sein. Wenn Sie das ActiveRecord-Muster verwenden, ist es ziemlich einfach, aber wenn Sie ein DAO-Muster mit "dummen" DTOs verwenden, dann behalten Sie diesen carCount außerhalb Ihres DTO und implementieren eine Methode in Ihrem DAO, wie "int getCarCount () ". – jpkrohling

+0

Ja, ich verwende das DAO-Muster. Ich hatte gehofft, von zwei Anrufen zu meiner DAO wegzukommen, aber ich denke, ich muss es tun. Es sei denn natürlich, ich möchte die @Formula Annotation von Hibernate verwenden; aber dann bin ich wirklich an Hibernate gebunden –

Antwort

6

Sie können es mit Formel machen. Etwas wie,

@Entity 
public class Car { 
    @Id 
    private int id; 
    @Column 
    private String carName; 

    @Formula("select count(*) from Car c where c.id = id") 
    private int carCount; 
} 

Auch gibt es einige Beispiele here.

Verwandte Themen