簡體   English   中英

將默認的hibernate createSQLQuery轉換為自制類列表

[英]Cast default hibernate createSQLQuery to list of self-made class

我有一個問題 - 我是hibernate的新手,需要通過executing session.createSQLQuery(query).list()命令來轉換表。 我試圖添加addEntity(Result.class)命令,但程序拋出異常:

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

我在mysql中的結果表如下所示:


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

我試圖創建實體類結果並注釋它,但似乎我失敗了。 我的實體類看起來像這樣:

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 +
                '}';
    }
}

你能幫我解決這個問題嗎?

你必須區分session.createQuery(query)session.createSQLQuery(query)如果你使用session.createQuery(query)你的查詢將用HQL編寫(這與SQL非常相似),你將能夠做到這一點那

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(); 

我個人建議你使用session.createQuery(query)這樣你就可以受益於hibernate映射的優點

在此鏈接中,您將找到有關Hibernate上下文中HQL和SQL之間差異的更多說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM