как создать объект с помощью @GeneratedValue (стратегии = GenerationType.AUTO) - PullRequest
0 голосов
/ 28 сентября 2018

Я новичок в java EE, и теперь у меня есть несколько вопросов о создании нового объекта сущности Transactiontype. Класс сущности TransactionType Как вы видите, я создал отношение один ко многим (один тип транзакции может иметь ноль или несколько платежей), я назначил два атрибута для TransactionsType: id (автогенерация) и транзакцияType (строка),Существует также набор платежей, и я хочу знать: 1. Я просто добавляю id и TransactionsType в таблицу транзакции, как я могу создать объект, не добавляя к нему какие-либо платежи?2. Как я должен передать автоматически сгенерированное значение -> id, когда я создал объект здесь?

Извините за эти глупые вопросы, я действительно не могу понять это.

1 Ответ

0 голосов
/ 29 сентября 2018

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

  1. Когда вы добавляете аннотацию @GeneratedValue для параметра id, под капотом JPA будет рассматривать идентификатор как эквивалент SQL первичного ключа.Поэтому нет необходимости устанавливать идентификатор, когда вы сохраняете объект Java;идентификатор будет сгенерирован автоматически.
  2. Когда вы устанавливаете аннотацию @OneToMany, эквивалентность в SQL является отношением один-ко-многим.Если вы не хотите устанавливать платежи, просто не делайте этого ...

Некоторый код для сохранения:

1.Вы должны ввести EntityManager

@PersistenceContext(unitName = "myPU")
    private EntityManager entityManager;

2.Сохраните POJObjcte (Java Transaction API (JTA) будет обрабатывать его)

  @Transactional(value = TxType.REQUIRED)
  public TransactionType create(@NotNull TransactionType item) {
        item.setPayment(payments); //it is not mandatory if you do not want to have payments
        item = entityManager.persist(item);
        return item;
 }    

После сохранения элемента идентификатор будет установлен автоматически.

...