当前位置: 首页 > 知识库问答 >
问题:

如何使用hibernate查询联接表?

鲁德佑
2023-03-14

我在Oracle SQL Developer中创建了三个表,即

1.Test_Employee2
2.Test_Project2
3.Employee_Project2。表Employee_Project2是连接表,因为Test_Project2Employee_Project2之间的关系是多对多
在hibernate中,我为Test_Project2Employee_Project2表创建了两个hibernate类Test雇员TestProject
和表Employee_Project2TestProjecthibernate类中定义如下:

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Employee_Project2", joinColumns = @JoinColumn(name = "proj_id"), inverseJoinColumns = @JoinColumn(name = "emp_id"))
private Set<TestEmployee> employeesList;

我用一些记录填充了表Test_Project2Employee_Project2,连接表Employee_Project2自动填充了一些记录。现在我目前面临的问题是,我想使用hiberante在连接表Employee_Project2上使用一个简单的选择语句,如下所示:

String hql = "FROM Employee_Project2";
    Query query = session.createQuery(hql);
    List results = query.list();

    for (Object row : results) {
        //what to do here
    }

我怎么能做到这一点,尽管联接表'Employee_Project2'不是一个Hibernate类。?

更新时间:

我想检索Hibernate表“TestProject”中的所有记录,所以我写了以下代码

String hql = "FROM TestProject";
Query query = session.createQuery(hql);
List results = query.list();
System.out.println("results.get(0)" + results.get(0).toString());

现在的问题是,在运行时,我收到如下内容

results.get(0)msc.hibernate.persistence.TestProject@12ec9534

如何获取每行中包含的值??

共有1个答案

乐正烨熠
2023-03-14

您要做的是创建类型化查询。使用适当的映射,您也可以获取相关对象-无需查询连接表,因为ORM将为您执行此操作:

Query query = session.createQuery(hql);
List<TestProject> results = query.list();

for (TestProject row : results) {
    //what to do here
    // do whatever you want
}

使用propper关系映射,您可以得到如下关系:

for (TestProject row : results) {
    Set<TestEmployee> employees=row.getEmployeesList();
    // do more work.
}

至于“如何”这个话题太宽泛了,无法用一个答案来回答。但你应该能够从这里开始-http://hibernate.org/orm/documentation/5.1/

 类似资料:
  • 嗨,我正在尝试使用左外部连接执行hql查询,它是thwhing异常作为org.hibernate.hql.ast.querysyntaxException:意外标记:在第1行附近,可以告诉我这个查询中有什么问题吗 从CreditCardDetails cred左外连接CustomerHistory custHist on cred.creditCardDetailSid=custHist.Cred

  • subcompany.hbm.xml 子单位表 branch.java 指定表 我需要帮助编写条件查询使用提供的SQL。

  • 我在Mysql中有一个查询, 我已经完成了简单的查询转换为hibernate查询。我将所有pojo类绑定到表。请指导我如何将多个连接查询转换为一个hibernate查询。

  • 问题内容: 我有以下hibernate映射: 而表如下所示: 我的hibernate查询看起来像: 但是我总是 有人可以帮我如何使它正常工作吗? 问题答案: 您必须使用子查询而不是联接。大致如下: 另外,根据类型的不同,应该以其他格式显示它。

  • 我有一个mysql内部联接查询,它联接数据库中的3个表,并生成所需的结果集。现在我想使用session.createQuery()编写相应的hibernate查询。我已经在我的项目中为这3个表创建了模型类。没有与3个表关联的映射。mysql查询如下所示。 现在请告诉我如何使用hibernate session.createQuery()编写这个查询?请帮助我。下面是3个表的模型类 帐户. java

  • 问题内容: 我有3个bean:组织,角色,用户 角色-组织关系-@ManyToOne 角色-用户关系-@ManyToMany 组织机构: 角色: 用户名: 因此,我需要获取指定用户的所有组织(首先,我需要选择所有用户角色,然后选择具有此角色的所有组织) 我有一个实现此逻辑的sql语句(例如,我选择id = 1的用户): 如何使用hibernate命名查询机制实现此目的?谢谢! 问题答案: @Nam