Строка JPA commit () пропущена после persist () - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь добавить новую сущность в свою базу данных, но каждый раз, когда я пытаюсь сделать это, строка подтверждения пропускается после persist ().

public T salvar(T t) {
        EntityManager em = daoHelper.getEM();
        try {
            em.getTransaction().begin();
            if (t.getId() == null) {
                em.persist(t);
                em.getTransaction().commit();
            }
        } catch (Exception e) {
        } finally {
            em.close();
        }
        return t;
    }

Я не знаю, что не так, потому чтообъект t завершен.

Редактировать 1: Это мои атрибуты сущности

private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "Id")
    private Integer id;
    @Column(name = "idItem")
    private Integer idItem;
    @Column(name = "pedidoData")
    @Temporal(TemporalType.DATE)
    private Date pedidoData;
    @Size(max = 9)
    @Column(name = "pedidoEnderecoCep")
    private String pedidoEnderecoCep;
    @Column(name = "pedidoEnderecoNumero")
    private Integer pedidoEnderecoNumero;
    @Size(max = 85)
    @Column(name = "pedidoEnderecoBairro")
    private String pedidoEnderecoBairro;

И это объект, который я пытаюсь добавить:

enter image description here

1 Ответ

0 голосов
/ 22 ноября 2018

На более высоком уровне кажется, что проблема заключается в том, где вы сохранили свой оператор commit .Вы сохранили его внутри условия if, поэтому commit происходит только тогда, когда условие if выполнено.Например, в примере входных данных, которыми вы делитесь, идентификатор не равен нулю, поэтому , если условие не выполнено, поэтому commit не будет выполняться, наоборот, если выотправит сущность с null id , commit .Вы должны переместить оператор фиксации за пределы блока if следующим образом:

 if (t.getId() == null) {
      em.persist(t);              
 }
 em.getTransaction().commit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...