Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Hibernate:Oracle与独立表上的(+;)连接_Sql_Oracle_Hibernate - Fatal编程技术网

Sql Hibernate:Oracle与独立表上的(+;)连接

Sql Hibernate:Oracle与独立表上的(+;)连接,sql,oracle,hibernate,Sql,Oracle,Hibernate,基本上,问题是: 我无法使用“(+)”联接更改现有查询 我需要使用Hibernate 我无法在这些独立的表之间建立关联 到目前为止,我得到的是使用 entityMgr.createNativeQuery(“我的连接(+)查询在此”) 然后我将其存储在一个通用的 List List=query.getResultList() 并通过 for(Object obj: list) { firstColVal = obj[1] ... } 问题:这是我的最佳

基本上,问题是:

  • 我无法使用“(+)”联接更改现有查询
  • 我需要使用Hibernate
  • 我无法在这些独立的表之间建立关联
  • 到目前为止,我得到的是使用

    entityMgr.createNativeQuery(“我的连接(+)查询在此”)

    然后我将其存储在一个通用的

    List List=query.getResultList()

    并通过

        for(Object obj: list) {
           firstColVal = obj[1]
           ...
        }
    
    问题:这是我的最佳选择吗?有更好的解决方案吗


    编辑:你们可以建议一个比Hibernate更合适的ORM框架:)

    不能从查询中删除的oracle join操作被弃用,因为它是在ANSI标准之前引入的

    该运算符不同于典型的联接,但主要区别在于,使用它可以比使用ANSI符号做得更少


    您的解决方案可能是在数据库上创建一个视图,该视图将在代码中映射。但你的解决方案仍然有效。您还可以添加一个,它将为结果生成有效的元组

    您能分享一下为什么不能删除该运算符吗?查询将以这种方式工作,但在这种情况下,我不明白使用Hibernate的意义…@Vash像往常一样,客户端规范加上遗留数据库。@AdamDyga,很好,但我们需要Hibernate来正确处理事务、持久化等。我们只是不能使用Hibernate进行连接(目前为止)。它没有被弃用-仍然可用。没什么不同;它的工作原理与@Bem相同,Oracle建议不要在新代码中使用它,当然工作方式也不同。因为它仅适用于where子句,并且不在块上操作。因此,它有其局限性,您可以创建一个ANSI查询,它可以作为(+)工作,但不能作为(+)工作。@Ben,请参阅外部连接部分@Ben:it“不推荐使用”。“Oracle建议您使用From子句外部连接语法,而不是Oracle连接运算符”我不知道如何集成“结果转换器”,因为我有一个javax.persistence.Query和.addResultTransformer仅用于org.hibernate.Query