Java org.hibernate.PropertyAccessException:无法通过的反射getter获取字段值
我环顾四周寻找答案,这似乎与思考有关,但由于我没有处理它们,我不确定如何继续。我正在尝试构建一个HQL查询,该查询只返回表中与另一个表中的某个FK列和某个PK相匹配的行 我的代码是这样的: 实体账簿:Java org.hibernate.PropertyAccessException:无法通过的反射getter获取字段值,java,hibernate,Java,Hibernate,我环顾四周寻找答案,这似乎与思考有关,但由于我没有处理它们,我不确定如何继续。我正在尝试构建一个HQL查询,该查询只返回表中与另一个表中的某个FK列和某个PK相匹配的行 我的代码是这样的: 实体账簿: @Entity @Table(name="book") public class Book { @Id private String bookNumber; private String bookName; private String bookDescription; private dou
@Entity
@Table(name="book")
public class Book {
@Id
private String bookNumber;
private String bookName;
private String bookDescription;
private double bookPrice;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="shelfnumber")
Shelf shelf;
实体架:
@Entity
@Table(name="shelf")
public class Shelf {
@Id
private String shelfNumber;
@OneToMany(mappedBy="shelf",cascade=CascadeType.ALL)
Set<Book> shelfBooks;
我收到的错误消息:
org.hibernate.PropertyAccessException: could not get a field value by reflection getter of com.library.entity.Shelf.shelfNumber
再往下看,我看到:
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.String field com.library.entity.Shelf.shelfNumber to java.lang.String
谢谢你的帮助 您的查询将
Shelf
的实例与String
的实例进行比较。那不行。架
是架
。它不是一个字符串
查询应该是
select b from Book b where b.shelf.shelfNumber = :shelfNum
另外,请告诉我,您并没有在每次请求时都重新创建SessionFactory
请。我们不再是2003年了。谢谢你的帮助!这很有效。别担心,我不会每次都重新创建SessionFactory,这只是为了演示,但我会检查您对原始类型的建议。再次感谢!
select b from Book b where b.shelf.shelfNumber = :shelfNum