2017-07-19 9 views
2

私はこの単純なアプリケーションをHibernateを使っていくつかのCRUD操作をしています。生成されたクエリでHibernate SQLエラー(潜在的にマッピングミス)

<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/library</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">123456</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.format_sql">true</property> 
    <property name="hibernate.default_schema">library</property> 
    <property name="hbm2ddl.auto" value="create"/> 
    <!-- Mappings --> 
    <mapping resource="librarysystem/mappings/Role.hbm.xml"/> 
    <mapping resource="librarysystem/mappings/Librarian.hbm.xml"/> 
    <mapping resource="librarysystem/mappings/Task.hbm.xml"/> 
    <mapping resource="librarysystem/mappings/Library.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

POJO:

public class Library implements java.io.Serializable { 

    private int id; 
    private String name; 
    private Set librarians = new HashSet(0); 

    //Constructors, getters and setters... 
} 

マッピング:

<hibernate-mapping> 
    <class name="librarysystem.entities.Library" table="library" catalog="library" optimistic-lock="version"> 
     <id name="id" type="int"> 
      <column name="id" /> 
      <generator class="assigned" /> 
     </id> 
     <property name="name" type="string"> 
      <column name="name" length="45" /> 
     </property> 
     <set name="librarians" table="librarian" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="libraryid" not-null="true" /> 
      </key> 
      <one-to-many class="librarysystem.entities.Librarian" /> 
     </set> 
    </class> 
</hibernate-mapping> 

コードリストを取得する:私は

コンフィグXMLを休止することによって生成されたクエリにこのエラーを抱えています

List<Library> libraries = session.createQuery("FROM Library").list(); 

私はライブラリのリストを取得するクエリを実行すると、例外は、クエリのログ出力があるクエリ構文が間違っていること

を言って発生します。

ライブラリをどうやっ
select 
    library0_.id as id1_2_, 
    library0_.name as name2_2_ 
from 
    library.library.library library0_ 

.library.libraryが起こった? 助けてください?

私は必要と思ったように最小限の詳細を与えました。あなたは(他のPOJOとマッピングなど)にエラーを見つけるために、より多くのコードが必要な場合は、library.library.libraryが起きましたか

答えて

1

お知らせください?助けてください?

私はここでは専門家ではありませんが、ここではトリプルライブラリは、データベース(カタログ)という名前のライブラリ内の名前付きライブラリのテーブルから来ていると思います。

<class name="librarysystem.entities.Library" table="library" catalog="library" optimistic-lock="version"> 

テーブル名とカタログ名は同じです。そこで、ライブラリlibraryというカタログを探しています。そこには、ライブラリlibrary.libraryというテーブルがあります。私は3番目の図書館で100%ではありませんが、私は正しい方向にいると思います。

xmlマッピングの代わりにhibernateアノテーションを使用する方が簡単です。

関連する問題