0
Как я могу вернуть автоматически генерируемый идентификатор только что вставленной строки, используя собственный метод sql и value object (без сохранения/обновления и т. Д.). Идентификаторы (поля идентификации) обрабатываются сервером базы данных.Hibernate custom sql для получения последнего идентификатора вставки
Java код DatabaseObject.java
public int insert(String sql, Object valueObject) throws Exception {
Session session = Entitlement.getSessionFactory().openSession();
session.beginTransaction();
int result = session.createSQLQuery(sql)
.setProperties(valueObject).executeUpdate();
session.getTransaction().commit();
session.close();
return result;
}
Использование DatabaseObject
String sql = "INSERT INTO user(emailAddress, password) VALUES(:emailAddress, :password)";
UserVO valueObject = new UserVO("[email protected]", "pass1234");
databaseObject.insert(sql, valueObject);
благодаря @eggyal. Как бороться с проблемой параллелизма в этом примере, если у вас несколько сотен потоков, выполняющих ту же функцию – user2727195
@ user2727195: 'LAST_INSERT_ID()' поддерживается * для подключения к базе данных *. – eggyal
ОК, я понимаю сейчас. Кроме того, мы обнаружили, что 'LAST_INSERT_ID()' является специальной функцией сеанса пользователя, протестированной с помощью фиктивной вставки в workbench mysql, и оба значения различны. – user2727195