使用 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();