0

データベース User と Link に 2 つのテーブルがあります。ユーザー ID は、リンク テーブルの外部です。Javaでモデルクラスを作成するために、休止状態の逆engg xmlを使用しました。User、Link、LinkId クラスを作成しました。ここでは、Link クラスが 2 つのテーブルをリンクし、LinkId には Link の属性が含まれています。ユーザー ID を使用してリンク テーブルをクエリしようとしています。私が持っているクエリは「createQuery( "from com.paypal.socialpay.models.LinkId li where li.userid=?").setInteger(0, id).list();」です。

しかし、クエリを実行すると、「java.lang.IllegalArgumentException: No positional parameters in query: from com.paypal.socialpay.models.LinkId li where li.userid=?」が表示されます。

誰かが私が間違っていることを教えてもらえますか

class name="com.paypal.socialpay.models.Link" table="link" catalog="socialdb">
    <composite-id name="id" class="com.paypal.socialpay.models.LinkId">
        <key-property name="id" type="int">
            <column name="id" />
        </key-property>
        <key-property name="userid" type="java.lang.Integer">
            <column name="userid" />
        </key-property>
        <key-property name="title" type="string">
            <column name="title" length="100" />
        </key-property>
        <key-property name="price" type="string">
            <column name="price" length="100" />
        </key-property>
        <key-property name="description" type="string">
            <column name="description" length="500" />
        </key-property>
        <key-property name="contentname" type="string">
            <column name="contentname" length="100" />
        </key-property>
        <key-property name="contentpreviewname" type="string">
            <column name="contentpreviewname" length="100" />
        </key-property>
        <key-property name="contentdisplayname" type="string">
            <column name="contentdisplayname" length="100" />
        </key-property>
        <key-property name="contentpreviewdisplayname" type="string">
            <column name="contentpreviewdisplayname" length="100" />
        </key-property>
        <key-property name="downloadlink" type="string">
            <column name="downloadlink" length="100" />
        </key-property>
        <key-property name="contentsavelocation" type="string">
            <column name="contentsavelocation" length="150" />
        </key-property>
        <key-property name="previewsavelocation" type="string">
            <column name="previewsavelocation" length="150" />
        </key-property>
    </composite-id>
    <many-to-one name="user" class="com.paypal.socialpay.models.User" update="false" insert="false" fetch="select">
        <column name="id" not-null="true" />
    </many-to-one>
</class>
4

1 に答える 1

1

これを使用してみてください:

session.createQuery("from Link where userid=:userId")
    .setParameter("userId", id)
    .list()

更新:マッピングは次のようになるはずです:

    <id name="id" column="id">
      <generator class="native"/> 
    </id>
    <property name="userid" column="userid"/>

<key-property>sではなくプロパティを持つなど

LinkIdから選択しようとしているため、クエリは機能しません。これはエンティティではなく、Linkのキーです。おそらくリバースエンジニアリングの問題です。

于 2012-04-09T22:48:40.157 に答える