0

HQL クエリが必要ですが、取得できません。

SELECT * FROM Poll WHERE pid NOT IN (
SELECT pid FROM votes WHERE uid =  'theuserid')

テーブルの投票にないuidが存在する場合、投票のすべてのリストを元に戻したいです。

また、テーブル投票の uidが存在するhql クエリも役立ちますが、これは非常に似ていると思います ;-)

これらは2つのクラスです:

public class Poll {

private int pid;
private String name;
private String description;
private Date deadline;
private Set<Team> teams = new HashSet<Team>(0);
//some getter & setter
}

public class Vote {

private int vid;
private String uid;
private int pid;
private int tid;
private int votes;
//some getter & setter
}

私を助けてください。WHEREとNOT LIKEの結合だと思いますが、わかりません。

メルシー!

これは、休止状態のマッピングです。

 <hibernate-mapping>
 <class name="package.model.Poll" table="poll">
 <id name="pid" column="pid" >
 <generator class="increment"/>
 </id>
<property name="name" column="name" />
<property name="description" column="description" />
<property name="deadline" type="timestamp" column="deadline" />

<set name="teams" table="pollchoice" 
        inverse="false" lazy="false" fetch="select" cascade="all" >
        <key>
            <column name="pid" not-null="true" />
        </key>
        <many-to-many entity-name="knt.exceedvote.model.Team">
            <column name="tid" not-null="true" />
        </many-to-many> 
</set>
 </class>
 </hibernate-mapping> 

 <hibernate-mapping>
   <class name="package.model.Vote" table="votes">
    <id name="vid" column="vid" >
    <generator class="increment"/>
   </id>
<property name="pid" column="pid" />
<property name="uid" column="uid" />
<property name="tid" column="tid" />
<property name="votes" column="votes" />


  </class>
 </hibernate-mapping>
4

1 に答える 1

1

Hibernate は、Object Graphリレーショナル オブジェクトに付けられた名前であるの概念を使用して設計されていることに注意してください。

あなたのマッピングにはその中心的な概念がありません (Poll と Vote は分離されているようです) HQL。そのため、現在の状態で使用できるとは思えません。

私の意見では、次の 2 つのオプションがあります。

  1. との関係を定義しPollます。そうすれば簡単に書けるはずです。pidVoteuidHQL

  2. Hibernateセッション自体を通じてネイティブ SQL を使用します。

于 2012-11-17T07:52:19.953 に答える