使用 EntityManager 执行 SQL 命令
Executing an SQL command with EntityManager
是否可以 运行 一个 SQL 不是 return resultSet 或者不是 INSERT 或 UPDATE 类型的脚本的脚本?
我正在尝试以下操作:
Query q = entityManager.createNativeQuery("DECLARE @max int;\n" +
"SELECT @max = MAX(customer_number)+1\n" +
"FROM organisation\n" +
"\n" +
"exec('ALTER SEQUENCE organisation_customer_number_seq RESTART WITH ' + @max)");
...当然这只是创建查询,如何执行它?我只能为不同类型的 resultSets 和 Query 的 executeUpdate 方法找到 getter。如何仅 运行 我在上面创建的查询以重新启动序列?
您在 Query
中看到的一些方法实际执行查询,例如 Query.getResultList :
getResultList()
Execute a SELECT query and return the query results as an untyped
List.
List<Object[]> results = q.getResultList();
UPDATE :在您的情况下,查询最终是一个 ALTER
所以当您发现时,相关方法将是 executeUpdate()
其中 returns 没有列表或值,但是受影响的行数。
int executeUpdate()
Execute an update or delete statement.
int altered = q.executeUpdate();
是否可以 运行 一个 SQL 不是 return resultSet 或者不是 INSERT 或 UPDATE 类型的脚本的脚本?
我正在尝试以下操作:
Query q = entityManager.createNativeQuery("DECLARE @max int;\n" +
"SELECT @max = MAX(customer_number)+1\n" +
"FROM organisation\n" +
"\n" +
"exec('ALTER SEQUENCE organisation_customer_number_seq RESTART WITH ' + @max)");
...当然这只是创建查询,如何执行它?我只能为不同类型的 resultSets 和 Query 的 executeUpdate 方法找到 getter。如何仅 运行 我在上面创建的查询以重新启动序列?
您在 Query
中看到的一些方法实际执行查询,例如 Query.getResultList :
getResultList()
Execute a SELECT query and return the query results as an untyped List.
List<Object[]> results = q.getResultList();
UPDATE :在您的情况下,查询最终是一个 ALTER
所以当您发现时,相关方法将是 executeUpdate()
其中 returns 没有列表或值,但是受影响的行数。
int executeUpdate()
Execute an update or delete statement.
int altered = q.executeUpdate();