jpa aktualizuje rekordy zamiast dodawać nowe

0

Hej, mam mały problem, otóż mam napisaną aplikację, która ma za zadanie dodać rekord do bazy danych.
metoda która to realizuje wygląda tak:

    public boolean addUser(User userData){
        factory = Persistence.createEntityManagerFactory(PERESISTENCE_UNIT_NAME);
        em = factory.createEntityManager();
        boolean status=false;
        try {
            em.getTransaction().begin();
            em.persist(userData);
            em.getTransaction().commit();
            status = true;
        } catch (RollbackException e) {
            em.getTransaction().rollback();
            status = false;
        }
        finally {
            em.close();
        }

        return status;
    }

Encja posiada:

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id",unique = true)
    private int id;

i konfiguracja:

         <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/java"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
            <property name="hibernate.show_sql" value="false"/>
            <property name="hibernate.connection.user" value="root"/>
            <property name="hibernate.connection.password" value=""/>
        </properties>

Wydaję mi się, że wcześniej to działało jak należy, tzn. po każdym requescie dodawało użytkownika do bazy danych, teraz dodaje tylko pierwszego, a przy kolejnych requestach ten pierwszy użytkownik zostaje zaktualizowany czy tam nadpisany.

Co może być nie tak?

0

Zamień "private int id;" na "private Integer id;" i upewnij się, że w chwili zapisu id jest nullem.

0

w pliku konfiguracyjnym powinieneś mieć update zamiast create.

<property name="hbm2ddl.auto">update</property>

możesz też zajrzeć tutaj:

0

Spróbuj:
userData.setId(null);
em.persist(userData);

1 użytkowników online, w tym zalogowanych: 0, gości: 1