Hibernate 在Spring数据jpa中的本机查询参数上换行双引号

Hibernate 在Spring数据jpa中的本机查询参数上换行双引号,hibernate,spring-boot,spring-data-jpa,Hibernate,Spring Boot,Spring Data Jpa,我必须使用SpringDataJPA本地查询运行以下Oracle查询 create user "kshitij" identified by "qwert123" 我正在尝试: @Query(value="create user \"?1\" identified by \"qwert123\"",nativeQuery=true) void createUser(String userName); 但是,当我将?1包装为“”时,它将停止将?1视为变量,由用户名代替,而不是实际字符串

我必须使用SpringDataJPA本地查询运行以下Oracle查询

create user "kshitij" identified by "qwert123"
我正在尝试:

@Query(value="create user \"?1\" identified by \"qwert123\"",nativeQuery=true)
    void createUser(String userName);
但是,当我将?1包装为“”时,它将停止将?1视为变量,由用户名代替,而不是实际字符串。 如何在SpringDataJPA中运行上述Oracle查询

除了create,我还想检查用户是否存在

当前不起作用的方法:

@Query(value="select username from all_users where username = \"?1\"", nativeQuery=true)

您是否尝试过使用参数?有一个注释告诉本机查询参数是什么,它是这样的

@Query(value="create user :userName identified by \"qwert123\"",nativeQuery=true)
    void createUser(@Param("userName")String userName);

将其放在类或实体的顶部

@NamedQueries({
    @NamedQuery(name = "EntityName.getUserName", query = "SELECT u FROM User u WHERE u.username = :username")
}) 

您可以尝试使用此代码吗

@Modifying
@Transactional
@Query(value="create user :userName identified by \"qwert123\"",nativeQuery=true)
void createUser(@Param("userName") String userName);

使用它将产生与?1相同的问题,因为在将:userName括在引号中之后,即“:userName”,它再次成为字符串文字。我想做的是用引号将变量替换掉。但他希望在他的查询中使用引号@SternKIf我不会用引号将参数括起来,我遇到了以下情况:要么使用@Rohan Shah的答案,要么删除
?1
周围的双引号。将查询替换为void createUser(字符串用户名)另外,添加
@Modifying
修饰符。为什么要使用双引号“”。。。。。。它可以是由密码标识的创建用户myuser您可以检查如何解决此问题?查询wold仍然在没有双引号的情况下运行。从我观察到的情况来看,当spring数据jpa替换参数并动态生成查询时,它会处理由单个QUOE包围的参数。对于select*where查询,这将起作用,但对于create user/drop user查询,这是一个无效的oracle查询,直接在oracle上运行它也会失败,这就是为什么我必须将它们括在双引号中的原因。您是否设置了参数值username?