0
私は、次のSQLクエリと同じ振る舞いを持つ基準クエリを作りたい:基準突起
SELECT Count(*)
FROM Datagathering_respuestas, Datagathering
WHERE Datagathering.document = 4 AND Datagathering.id_datagathering = datagathering_respuestas.id_datagathering
GROUP BY respuesta;
それはすべて以下のクラスの周りです:
public class DataGathering {
private int id;
private Usuario user;
private Date fecha;
private int individual;
private DataDocument document;
private List<String> respuestas;
と、それは、対応するマッピングファイルです:ここ
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="pe.com.abf.pws.clases.DataGathering">
<id column="id_datagathering" name="id">
<generator class="identity"/>
</id>
<many-to-one class="pe.com.abf.pws.clases.DataDocument" name="document"/>
<many-to-one class="pe.com.abf.pws.clases.Usuario" name="user"/>
<property name="individual"/>
<property name="fecha" type="timestamp"/>
<list name="respuestas">
<key column="id_datagathering"/>
<index column="idx_respuesta"/>
<element column="respuesta" length="4000" type="string"/>
</list>
</class>
</hibernate-mapping>
私の主な問題は、グループ化プロパティ「RESですpuestas "はstring型の要素のリストとして定義され、それ自身のクラスはありません。 SQLでは、対応するテーブルへの参照だけで簡単ですが、Criteriaでは、それらをグループ化する要素をどのように参照するかわかりません。
要素によって上記のSQLクエリとしてではなくグループなしで同じ動作を持ってい Criteria c = s.createCriteria(DataGathering.class);
c.add(Restrictions.eq("document.id", id));
c.createCriteria("respuestas","resp");
c.setProjection(Projections.projectionList().add(Projections.rowCount()));
ので、私は、私は近いと思う:私はこのクエリを取得するために管理しています。問題は再び私が "respuestas"の中の値を参照する方法を知らないことです。
私はどのようにクエリを完了できますか?どんな助けも高く評価されます。