如何在执行SQLQuery.executeUpdate()insert语句后获得自动增量

时间:2013-10-17 20:58:22

标签: sql hibernate auto-increment

执行插入后是否可以检索autoinc字段:

String queryString = "insert into " + String.format("table%04d", id) +
                "(sectionid, topicid, dc) values (" + entry.getSectionId() +
            ", " + entry.getTopicId() + ", " + entry.getDc() + ")";
SQLQuery query = session.createSQLQuery(queryString);
query.executeUpdate();

该表有四个字段

eid - autoinc
sectionid - int
topicid - int
dc - int

请帮帮我

1 个答案:

答案 0 :(得分:0)

不幸的是,通过使用SQL查询而不是HQL,您绕过了Hibernate的大部分数据库无关的好处。如果您绝对不能使用HQL,则必须实现自己的数据库特定实现。要做到这一点,首先需要从Hibernate获取JDBC驱动程序类:

How to get database metadata from entity manager

一旦有了驱动程序类,就可以根据该类进行特定于数据库的查询。由于您无法修改驱动程序类以实现具有特定get autoinc查询的接口,因此我在以下链接中推荐Nico的建议:

switch instanceof?

在驱动程序类上实现switch语句后,您可以选择是否实现MYSQL,MSSQL或其他autoinc查询。