По ряду веских причин я делаю родную вставку данных jpa для данных.
Запрос выполняется правильно.
Но мне нужно только что сгенерированный идентификатор таблицы, сгенерированный nextval('hibernate_sequence')
Есть ли способ получить этот идентификатор?
Вот мой запрос:
/**
* Inserts a new file attachment.
* This is useful and maybe better suitable, because one may not want to load the whole
* job offer to fullfill the JobOffer -> FileAttachment OneToMany Relation
*
* @param file a given file
* @param fileName a given file name
* @param jobOfferId a given job offer id
* @return int the new id
*/
@Modifying
@Query(value = "insert into fileattachment(fileattachmentid, file, filename, joboffer_jobofferid) values (nextval('hibernate_sequence'), ?1, ?2, ?3);", nativeQuery = true)
int insertFileAttachment(String file, String fileName, long jobOfferId);
Возвращаемое значение int просто дает количество вставленных записей (1).
Но мне нужен новый идентификатор.
Я не хочу запрашивать его после вставки другим запросом к базе данных. Потому что, если мне нужно, вся нативная вставка устареет.
Кто-нибудь знает ответ / Есть ли у кого-нибудь альтернативные советы?
Спасибо!
С уважением
Томас
Редактировать
Я использую встроенную вставку, чтобы не загружать всю запись задания, которая представляет собой множество бесполезных данных, просто чтобы сохранить данные так, как это делается с помощью entitymanager.
Вместо этого я вставляю родные данные.
В любом случае, ваш отзыв о возвращаемых данных из операторов вставки был очень крут.
Я давал этому попытку, и это работает. Большое спасибо!
Я закончил с этим решением:
/**
* Inserts a new file attachment.
* This is useful and maybe better suitable, because one may not want to load the whole
* job offer to fullfill the JobOffer -> FileAttachment OneToMany Relation
*
* @param file a given file
* @param fileName a given file name
* @param jobOfferId a given job offer id
* @return int the new id
*/
@Query(value = "insert into fileattachment(fileattachmentid, file, filename, joboffer_jobofferid) values (nextval('hibernate_sequence'), ?1, ?2, ?3) returning fileattachmentid;", nativeQuery = true)
long insertFileAttachment(String file, String fileName, long jobOfferId);