java - 如何使用hibernate查询连接表?

标签 java oracle hibernate

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

1.Test_Employee2
2.Test_Project2
3.Employee_Project2
Employee_Project2 表是联接表,因为 Test_Project2Employee_Project2 之间的关系是多对多
在 hibernate 中,我分别为 Test_Project2Employee_Project2 表创建了两个 hibernate 类 TestEmployeeTestProject
Employee_Project2TestProject hibernate 类中定义如下:

@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 上使用一个简单的 select 语句,如下所示:

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

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

最佳答案

您想要做的是创建类型化查询。通过正确的映射,您还可以获得相关对象 - 无需查询连接表,因为 ORM 将为您执行此操作:

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

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

通过适当的关系映射,您可以获得如下关系:

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

至于“如何” - 该主题太广泛,无法用单个答案等涵盖它,但您应该能够从这里开始 - http://hibernate.org/orm/documentation/5.1/

关于java - 如何使用hibernate查询连接表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39848443/

相关文章:

oracle - 如何设置Oracle SQL Developer自动换行长SQL语句

java - 在hibernate注释中映射超过2个表

java - hibernate 中的createSQLQuery使用Prepared Statement?

Java链表如何创建一个保存字符串和整数的节点?

java - 以编程方式覆盖 log4j 配置 : file location for FileAppender

java - 使用lucene进行前缀搜索

java - 简化 Hibernate 的查询

java - Logstash 加载错误 - Java

database - 使用sql将文件csv中的数据导入Oracle

java - Hibernate Session saveOrUpdate 不更新