gpt4 book ai didi

java - org.hibernate.QueryException : could not resolve property

转载 作者:行者123 更新时间:2023-12-04 05:45:10 25 4
gpt4 key购买 nike

这是我第一次使用JPA。我用 Java 和 JPA 编写代码。我的代码如下。

 String queryStr = "SELECT m.title, b.isbn, b.authors";
queryStr += " FROM Book b, Media m";
queryStr += " WHERE m.MediaID = b.MediaID";
queryStr += " AND b.isbn = '" + isbn + "' AND m.title = '%" + title +"%'";
Query query = em.createQuery(queryStr);

在我的代码中,Class Book 扩展了类 Media。

但我得到的错误是

org.hibernate.QueryException: could not resolve property: MediaID of: mediaManagement.Media [SELECT m.title, b.isbn, b.authors FROM mediaManagement.Book b, mediaManagement.Media m WHERE m.MediaID = b.MediaID ]



这是媒体类。
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "Media")
@NamedQuery(name = "findAllMedias", query = "select b from Media b")
public class Media {

@Id
@Column(name = "MediaID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int mediaID;

/**
* Getter of the property <tt>mediaID</tt>
*
* @return Returns the mediaID.
* @uml.property name="mediaID"
*/
public int getMediaID() {
return mediaID;
}

/**
* Setter of the property <tt>mediaID</tt>
*
* @param mediaID
* The mediaID to set.
* @uml.property name="mediaID"
*/
public void setMediaID(int mediaID) {
this.mediaID = mediaID;
}

/**
* @uml.property name="title"
*/
@Column(name = "title")
private String title;

/**
* Getter of the property <tt>title</tt>
*
* @return Returns the title.
* @uml.property name="title"
*/
public String getTitle() {
return title;
}

/**
* Setter of the property <tt>title</tt>
*
* @param title
* The title to set.
* @uml.property name="title"
*/
public void setTitle(String title) {
this.title = title;
}

/**
* @uml.property name="editionDate"
*/

private Calendar editionDate;

/**
* Getter of the property <tt>editionDate</tt>
*
* @return Returns the editionDate.
* @uml.property name="editionDate"
*/
public Calendar getEditionDate() {
return editionDate;
}

/**
* Setter of the property <tt>editionDate</tt>
*
* @param editionDate
* The editionDate to set.
* @uml.property name="editionDate"
*/
public void setEditionDate(Calendar editionDate) {
this.editionDate = editionDate;
}

/*
* Two medias are equal if their mediaID is the same
*/
@Override
public boolean equals(Object media) {
if (media == null)
return false;
Media b = (Media) media;

if (b.mediaID == mediaID)
return true;

return false;
}

public Media() {
};

/**
* Creates a media All parameters should be given
*
* @param title
* the title of the media
*
* @param editionDate
* date of the edition of the media
*
* @throws BadParametersException
*/
public Media(String title, Calendar editionDate)
throws BadParametersException {
if ((title == null) || (editionDate == null))
throw new BadParametersException();

this.title = title;
this.editionDate = editionDate;

}

/**
* Returns a description of the media
*/
public String toString() {
return this.title + " " + String.valueOf(this.title);
}

/**
* @uml.property name="copies"
* @uml.associationEnd multiplicity="(0 -1)" inverse="media:copyManagement.Copy"
*/
@OneToMany(mappedBy="mediaRef") protected Set<Copy> copies;

public void addCopy(Copy copy) {
copies.add(copy);
}

/**
* Getter of the property <tt>copies</tt>
* @return Returns the copies.
* @uml.property name="copies"
*/
public Set<Copy> getCopies() {
return copies;
}

/**
* Setter of the property <tt>copies</tt>
* @param editionDate The copies to set.
* @uml.property name="copies"
*/
public void setCopies(Set<Copy> copies) {
this.copies = copies;
}

这是书籍类。
@Entity
@Table(name = "Book")
@NamedQuery(name = "findAllBooks", query = "select b from Book b")
public class Book extends Media {
/**
* @uml.property name="authors"
*/
@Column(name = "authors")
private ArrayList<String> authors;

/**
* Getter of the property <tt>authors</tt>
*
* @return Returns the authors.
* @uml.property name="authors"
*/
public ArrayList<String> getAuthors() {
return authors;
}

/**
* Setter of the property <tt>authors</tt>
*
* @param authors
* The authors to set.
* @uml.property name="authors"
*/
public void setAuthors(ArrayList<String> authors) {
this.authors = authors;
}

/**
* @uml.property name="isbn"
*/

@Column(name = "isbn")
private String isbn;

/**
* Getter of the property <tt>isbn</tt>
*
* @return Returns the isbn.
* @uml.property name="isbn"
*/
public String getisbn() {
return isbn;
}

/**
* Setter of the property <tt>isbn</tt>
*
* @param isbn
* The isbn to set.
* @uml.property name="isbn"
*/
public void setisbn(String isbn) {
this.isbn = isbn;
}

public Book() {
// TODO Auto-generated constructor stub
}

public Book(String title, Calendar editionDate, ArrayList<String> authors,
String isbn) throws BadParametersException {
super(title, editionDate);
this.authors = authors;
this.isbn = isbn;
// TODO Auto-generated constructor stub
}

}

任何人都可以帮忙吗?

最佳答案

如果书扩展了媒体,为什么要加入媒体表? (尽管使用 Book 和 Media 类和映射会更容易)

查询“Book”对象就足够了。也许“MediaId”应该是“mediaId”。 Hibernate 的属性名称区分大小写。

关于java - org.hibernate.QueryException : could not resolve property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com