【问题标题】:HQL JoinTable not accessible 2HQL JoinTable 无法访问 2
【发布时间】:2013-01-30 10:33:34
【问题描述】:

我有这样的代码

@ManyToMany(cascade = { CascadeType.ALL }) @JoinTable(name = "AssignedBook_Person", joinColumns = { @JoinColumn(name = "person_Id") }, inverseJoinColumns = { @JoinColumn(name = "book_Id") } )

如您所见,我的 JoinTable 名称是 AssignedBook_Person,我想使用该代码从中获取一些数据

List borrowedBook = session createQuery(" from AssignedBook_Person ") .setCacheable(true).list();

但它给出了这个错误“AssignedBook_Person is not mapped”

有没有人知道如何解决 JoinTable 问题。

谢谢

【问题讨论】:

    标签: hql


    【解决方案1】:

    您不能通过 HQL 直接查询数据库表,因为它不对数据库表进行操作 - 它对实体进行操作。这就是对象关系映射的主要思想。

    Join 表包含有关 Book 和 Person 之间关系的数据,因此可以通过选择其中一个实例然后检查相关实体来获取数据。

    如果只需要join_table中的原始数据,可以使用原生查询:

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

    【讨论】:

    • 但我的问题是关于将 AssignedBook_Person 表映射到 hibernate.cfg.xml。在 xml 中找不到 AssignedBook_Person。
    • 您不必将表添加到 hibernate.cfg.xml。它仍然是一个连接表,而不是直接映射到实体的表,这就是存在限制的原因,如答案中所述。
    猜你喜欢
    • 2011-06-24
    • 2011-06-27
    • 1970-01-01
    • 2018-04-17
    • 2018-06-08
    • 1970-01-01
    • 2019-05-09
    • 2015-07-15
    • 2017-06-20
    相关资源
    最近更新 更多