首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >org.hibernate.QueryException:无法解析属性

org.hibernate.QueryException:无法解析属性
EN

Stack Overflow用户
提问于 2012-05-27 11:26:16
回答 1查看 10.8K关注 0票数 2

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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扩展了类媒体。

但我得到的错误是

org.hibernate.QueryException:无法解析属性: MediaID of: mediaManagement.Media选择m.title、b.isbn、b.authors从mediaManagement.Book b、mediaManagement.Media m中m.MediaID = b.MediaID

这是媒体课。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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;
}

这是书课。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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
}

}

有人能帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2012-05-27 12:08:24

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10776625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文