gpt4 book ai didi

java - 是否可以通过 JPA 创建、删除或更新 Oracle DB 用户?

转载 作者:行者123 更新时间:2023-11-30 03:05:24 25 4
gpt4 key购买 nike

在第一阶段,我通过 JDBC 管理我的应用程序,因此我负责构建和验证所有 SQL。但我想知道 JPA 是否可以帮助我完成这些任务。

所以,此时我已经有了一个 DbaUser 模型,它是从 OracleDB 上的 DBA_USERS 表生成的,我实际上可以列出所有这些模型。

但是,我试图设法创建或更新更多内容,但每当我尝试使用

创建时
 em.createQuery("CREATE USER C##ANTONIO IDENTIFIED BY Antionio123").executeUpdate();

启动语法异常:查询未以有效标识符开头,必须是 SELECT、UPDATE 或 DELETE FROM。

你们能给我更多启发或者给我指出一些合适的教程吗?我一直在谷歌搜索,但 Oracle DB 系统表上没有出现任何具体内容。

更新1(感谢@JB Nizet)

将查询的执行从 JPQL 替换为 Native SQL 后,出现如下错误:

Query: DataModifyQuery(sql="CREATE USER C? IDENTIFIED BY ANTONIO123").

我已将带有转义字符“...C##...”的主题标签替换为“...C\#\#...”,但该问题具有不同的风格:

Query: DataModifyQuery(sql="CREATE USER C\? IDENTIFIED BY ANTONIO123")

...我确实需要将“##”发送到 Oracle DB。我怎样才能强制使用这些特殊字符?

更新2

所以...经过更多的谷歌搜索后,我发现了位置参数,而且我还发现我们不能在 JPA native 查询上命名参数。之后,我尝试过:

em.createNativeQuery("CREATE USER ?1 IDENTIFIED BY ANTONIO123").setParameter(1, "C##ANTONIO").executeUpdate();

哪个触发器:ORA-01935:缺少用户或角色名称

一起
Error Code: 1935
Call: CREATE USER ? IDENTIFIED BY ANTONIO123

这告诉我这个绑定(bind)不起作用。还有其他方法吗?

提前致以亲切的问候和感谢,

萨米

最佳答案

createQuery() 需要一个 JPQL 查询。你传递的不是JPQL。这是SQL

使用createNativeQuery()执行 SQL。

关于java - 是否可以通过 JPA 创建、删除或更新 Oracle DB 用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com