Java 将本机查询作为字符串传递给@query

Java 将本机查询作为字符串传递给@query,java,oracle,hibernate,jpa,Java,Oracle,Hibernate,Jpa,我有一个查询,需要先构造为字符串 StringBuilder query = new StringBuilder(); query.append(....); query.append(....); 我想将此查询作为本机查询传递,如: myTableRepository.insertData(query.toString()); 因此,在MyTableRepository中,我可以像使用@Query注释一般使用本机查询一样使用它 可能吗 另外,我没有使用createNative(),由于一些

我有一个查询,需要先构造为字符串

StringBuilder query = new StringBuilder();
query.append(....);
query.append(....);
我想将此查询作为本机查询传递,如:

myTableRepository.insertData(query.toString());
因此,在
MyTableRepository
中,我可以像使用
@Query
注释一般使用本机查询一样使用它

可能吗


另外,我没有使用
createNative()
,由于一些遗留问题,我不想使用
EntityManager

我认为这是不可能的,它将使您的代码暴露于jpql注入攻击,并且从DB优化器的角度来看,它会导致性能差,导致每次都必须创建查询。您可以使用查询来构建安全的动态查询。

我认为这是不可能的,它会使您的代码受到jpql注入攻击,从DB optimizer的角度来看,它会导致性能不佳,导致每次都必须创建查询。您可以使用query来构建安全的动态查询。

当然可以(通过存储库扩展方法),但这有点违背了使用repository@crizzis,你能让我看看任何例子吗。我知道这并不理想,但我仍然想知道它是如何做到的。谢谢。例如,这当然是可能的(通过一个存储库扩展方法),但是有点违背了使用repository@crizzis,你能让我看看任何例子吗。我知道这并不理想,但我仍然想知道它是如何做到的。谢谢。例如,你看