[英]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.