2017-08-06 11 views
2

私は問題があります - 私は冬眠しているため、テーブルをキャストする必要があり、executing session.createSQLQuery(query).list()コマンドで返されます。 私はaddEntity(Result.class)コマンドを追加しようとしましたが、プログラムが例外をスローします。私は、Entityクラス結果と注釈を作成しようとしましたデフォルトのhibernate createSQLQueryを自作クラスのリストにキャスト


| bookName | authorSurname | authorFirstName | authorPatronymic | releaseDate | amountBooks| 

:MySQLで

Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.MappingException: Unknown entity: com.hib.entities.Result 

マイ結果テーブルは次のようになりますそれは、私が失敗したようです。 私のエンティティクラスは次のようになります。

package com.hib.entities; 

import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table 
public class Result { 

    String bookName; 
    String authorSurname; 
    String authorFirstName; 
    String authorPatronymic; 
    Integer releaseDate; 
    Integer amountBooks; 

    public Result(String bookName, String authorSurname, String authorFirstName, String authorPatronymic, Integer releaseDate, Integer 
      amountBooks) { 
     this.bookName = bookName; 
     this.authorSurname = authorSurname; 
     this.authorFirstName = authorFirstName; 
     this.authorPatronymic = authorPatronymic; 
     this.releaseDate = releaseDate; 
     this.amountBooks = amountBooks; 
    } 

    public void setBookName(String bookName) { 
     this.bookName = bookName; 
    } 

    public void setAuthorSurname(String authorSurname) { 
     this.authorSurname = authorSurname; 
    } 

    public void setAuthorFirstName(String authorFirstName) { 
     this.authorFirstName = authorFirstName; 
    } 

    public void setAuthorPatronymic(String authorPatronymic) { 
     this.authorPatronymic = authorPatronymic; 
    } 

    public void setReleaseDate(Integer releaseDate) { 
     this.releaseDate = releaseDate; 
    } 

    public void setAmountBooks(Integer amountBooks) { 
     this.amountBooks = amountBooks; 
    } 

    public String getBookName() { 
     return bookName; 
    } 

    public String getAuthorSurname() { 
     return authorSurname; 
    } 

    public String getAuthorFirstName() { 
     return authorFirstName; 
    } 

    public String getAuthorPatronymic() { 
     return authorPatronymic; 
    } 

    public Integer getReleaseDate() { 
     return releaseDate; 
    } 

    public Integer getAmountBooks() { 
     return amountBooks; 
    } 

    @Override 
    public String toString() { 
     return "Result{" + 
       "bookName='" + bookName + '\'' + 
       ", authorSurname='" + authorSurname + '\'' + 
       ", authorFirstName='" + authorFirstName + '\'' + 
       ", authorPatronymic='" + authorPatronymic + '\'' + 
       ", releaseDate=" + releaseDate + 
       ", amountBooks=" + amountBooks + 
       '}'; 
    } 
} 

あなたは、この問題を解決するために私を助けてくださいことはできますか?

答えて

0

あなたは、あなたのクエリが(SQLに非常によく似ている)HQLに書き込まれますsession.createQuery(query)使用している場合session.createQuery(query)session.createSQLQuery(query) を区別する必要があり、あなたはその

Query q = session.createQuery(query) List<Result> myResultList = q.list();

のように行うことができるようになりますしかし

あなたがsession.createSQLQuery(query)を使用したい場合は、この

を使用する必要があります
List<Result> myResultList = session.createSQLQuery(query).setResultTransformer(
    Transformers.aliasToBean(Result.class)).list(); 

個人的に私はあなたが休止状態のコンテキストでHQLとSQLの違いについての詳細な説明がありますので、あなたがこのlinkでHibernateマッピングのADVATAGESの

を受けることができsession.createQuery(query)を使用することができrecommandでしょう。

関連する問題