2015-10-07 4 views
0

У меня есть таблица T1 (ID AUTOINCREMENT INT, COL1, COL2 и т. Д.).Сохранение объекта без выборки ID

Объект JPA для T1 имеет идентификатор поля, который отмечен как @Generated и @Id. Это означает, что JPA указывает, что ключ объекта не задан приложением и что БД будет генерировать идентификатор. Код вызывает метод persist для сохранения объекта. Мне не нужна управляемая организация.

@Entity 
@Table(name = "T1") 
public class Customer implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "ID") 
    private Long customerd; 
    @Column(name = "COL1") 
    private String col1; 

При запуске приложения, JPA, кажется, чтобы вставить строку в таблице и сразу выбрать сгенерированный идентификатор быть установлен в объекте.

Можно ли сообщить JPA не получать сгенерированный идентификатор? Я хочу, чтобы JPA выполнила INSERT и забыла запись.

База данных - это DB2. Реализация JPA - это спящий режим.

С уважением,

Яш

+1

поэтому разместите объект и его аннотации/XML, а также о том, как вы его сохраняете, и, возможно, укажите, какая реализация JPA используется (поскольку «JPA» - это просто интерфейс). Прочтите спецификацию JPA, так как любой объект после вызова «persist» будет находиться в управляемом состоянии ... ВСЕГДА. –

ответ

0

Per JPA Spec, каждый объект должен иметь первичный ключ - может быть простым или составным первичным ключом. Это означает, что вам нужно указать хотя бы свойство, чтобы указать, что это первичный ключ вашего объекта, используя аннотации @Id или @EmbeddedId. Поставщик JPA гарантирует, что сгенерированный идентификатор объекта будет доступен в аннотированном свойстве Id во время вызова persist. Поставщик JPA назначит идентификатор до или после совершения транзакции (зависит от используемой стратегии генерации). Независимо от используемой стратегии и если вы вручную не устанавливаете свойство Id самостоятельно, это не помешает поставщику JPA запрашивать сгенерированный идентификатор и назначать его вашему Entity.

Смежные вопросы