0

JSPからHibernate4.1を介してMySQLテーブルのメンバーのリストにアクセスしようとしています。

コードを実行するたびに、ページでこの例外が発生します。

org.apache.jasper.JasperException: Exception in JSP: /home.jsp:27
org.hibernate.exception.SQLGrammarException: You have an error in your SQL syntax;
    check the manual that corresponds to your MySQL server version
    for the right syntax to use near '.members members0_' at line 1

詳細な例外は、次の行を原因として示しています...

List<Members> result = ses.createQuery( "from Members" ).list();

Members.hbm.xmlは次のとおりです...

<hibernate-mapping>
<class name="com.stichon.ets.db.Members" table="members" catalog="stiadmin_ets">
    <id name="idMembers" type="java.lang.Integer">
        <column name="id_members" />
        <generator class="identity" />
    </id>
    <property name="initials" type="string">
        <column name="`initials`" length="15" />
    </property>
    <property name="firstName" type="string">
        <column name="`first_name`" length="45" />
    </property>
    <property name="lastName" type="string">
        <column name="`last_name`" length="45" />
    </property>
    <property name="mobile" type="string">
        <column name="`mobile`" length="15" not-null="true" />
    </property>
    <set name="notificationses" table="notifications" inverse="true" lazy="true" fetch="select">
        <key>
            <column name="id_member" />
        </key>
        <one-to-many class="com.stichon.ets.db.Notifications" />
    </set>
</class>
</hibernate-mapping>

列名に「`」(バックティック)を追加しても効果はありません.... :(

更新:ログファイルのSQLクエリ。

Hibernate: select devices0_.`idDevices` as idDevices1_0_, devices0_.`name` as name2_0_, devices0_.`desc` as desc3_0_ from stiadmin_ets.stiadmin_ets.`devices` devices0_

ここに2つの問題があります

  1. テーブル名に0_、1番目のフィールドに1_0_、2番目のフィールドに2_0_というように追加します。
  2. 追加のDB名stiadmin_ets.stiadmin_etsを追加します。hbmファイルのカタログ属性と関係がある可能性があります。チェックします...

前もって感謝します

4

1 に答える 1

0

私の悪い!

問題は解決された。MySQL5Dialectの代わりにMySQLDialectを使用していました。また、メインのcfgxmlからdefault_schemaを削除しました。

于 2012-09-13T14:03:31.700 に答える