У меня есть уникальный идентификатор даты + последовательность в Oracle. Пример: 20130307-000021Получить обратно UniqueID после сохранения JPA
Мой объект объект UniqueID выглядит следующим образом:
@Id
// @GeneratedValue
// @Basic(optional = false)
// @NotNull
// @Size(min = 1, max = 15)
@Column(name = "UNIQUE_ID")
private String uniqueId;
В любое время я использую @GeneratedValue или это варианты я получаю «последовательность не найдена» или какой-либо другой ошибки. Я пытаюсь вернуть уникальный идентификатор, созданный базой данных Oracle после того, как я сохраню объект.
this.dbConn.persist(orderDetail);
this.dbConn.flush();
//this.dbConn.refresh(orderDetail);
//OrderDetails od = new OrderDetails();
//od =(OrderDetails)this.dbConn.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(orderDetail);
Выше были некоторые различные вещи, которые я пробовал. Когда я использую обновление, я получаю сообщение об ошибке «Сущность» не найден (я предполагаю, что он ищет объект на основе предварительно сохраненного уникального идентификатора null. Возможно ли вернуть эту автоматически созданную дату + порядковый номер? m, способный постоянно сохранять и извлекать объекты, просматривая вставленный объект и копируя уникальный идентификатор напрямую, но, очевидно, это бесполезно. Любая помощь очень ценится, и если вы хотите видеть сообщения об ошибках и т. д., просто дайте мне знать. и я либо вижу «решения», которые кажутся тем, что я пытаюсь, либо один человек сказал, что он использовал «грубую работу», но не описал, что это значит.
Это проблема с курицей и яйцом. Если ваш идентификатор генерируется триггером (как я предполагаю), вам нужен еще один уникальный идентификатор, чтобы получить только что вставленную строку и получить от него идентификатор сгенерированного триггера. Почему вы не сначала генерируете идентификатор, а затем назначаете его своему сущности и сохраняете его? –
Спасибо за ответ. Мы хотели, чтобы база данных генерировала уникальный идентификатор, а не код. Возможно, мы просто можем создать базу данных без этой отметки даты. Из примеров, которые я прочитал, казалось бы, я могу ссылаться на эту последовательность через @generatedvalue (strategy = generationtype.sequence)? Вот мой возможный триггер, если я пытаюсь только простую последовательность: – JMag
'если INSERTING то если: new.UNIQUE_ID равно нулю, то выберите ourSchema.USERS_seq.nextval в: new.UNIQUE_ID от DUAL; end if; End If; ' – JMag