2013-02-14 54 views
0

我有这样的HQL JoinTable不可访问2

@ManyToMany(级联= {CascadeType.ALL})@JoinTable(名称= “AssignedBook_Person”,joinColumns = {@JoinColumn(名称= “PERSON_ID” 代码) },inverseJoinColumns = {@JoinColumn(name = “book_Id”)})

正如你看到我的JoinTable的名字是AssignedBook_Person,我想采取一些数据来自其与代码

列表borrowedBook =会话的createQuery( “从AssignedBook_Person”) .setCacheable(真).LIST();

但它给这个错误“AssignedBook_Person没有映射”

没有任何人有任何想法如何,我可以解决JoinTable问题。

感谢

回答

0

无法通过HQL直接查询数据库中的表,因为它不工作到数据库表 - 它的运作的实体。这是对象关系映射的主要思想。

加入表包含有关书籍和人之间的关系数据,这样的数据可以通过选择其中的一个实例,然后检查相关实体获取。

如果需要在join_table只有原始数据,本机可以使用查询:

session.createSQLQuery(SELECT person_id, book_id FROM AssignedBook_Person); 
+0

但我的问题是有关地图AssignedBook_Person表到hibernate.cfg.xml。它在xml中找不到AssignedBook_Person。 – 2013-02-15 06:03:23

+0

您不必将表添加到hibernate.cfg.xml。它仍然是一个连接表,而不是直接映射到实体表,这就是为什么有局限性,在回答说明。 – 2013-02-15 19:43:42