使用EntityManager执行SQL命令

时间:2017-03-02 09:21:39

标签: java sql-server entitymanager hibernate-native-query

是否可以运行不返回resultSet的SQL脚本,或者不是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)");

...但当然只是创建查询,如何执行它?我只能为Query的不同类型的resultSets和executeUpdate方法找到getter。如何运行我上面创建的查询来重新启动序列?

1 个答案:

答案 0 :(得分:2)

您在Query中看到的某些方法实际执行了查询,例如Query.getResultList

  

<强> getResultList()

     

执行SELECT查询并将查询结果作为无类型返回   列表。

List<Object[]> results = q.getResultList();

更新:在您的情况下,查询最终为ALTER,因此当您想出来时,相关方法将是executeUpdate(),它不返回任何列表或值,而是返回受影响的行数。

  

int executeUpdate()

     

执行更新或删除声明。

int altered =  q.executeUpdate();