Czy usunąć (podmiot Object) metoda EntityManager pracy tylko na te obiekty dostał od znaleźć() metoda?javax.persistence.Entitymanager: usunąć() metoda
Mam następujący fragment kodu:
public void deletePerson() {
EntityManager em = getEntityManager();
Person p = new Person("x", "y", 200);
em.remove(p);
}
Ale to nie jest usunięcie konkretnego wpisu z bazy danych.
Kiedy próbowałem coś jak poniżej:
public void deletePerson() {
EntityManager em = getEntityManager();
Person p = em.find(Person.class, 200);
em.remove(p);
}
to działa dobrze.
Biorąc pod uwagę powyższe zdanie, jest em.remove (em.merge (osoba)) - gdzie osoba została pobrana z bazy danych - poprawny sposób na usunięcie obiektu ? – dendini
@dendini Nie, jeśli 'osoba' została pobrana z bazy danych, oznacza to, że istnieje w bazie danych. Tak więc w tym przypadku możesz zadzwonić bezpośrednio 'em.remove (osoba)'. –
Musisz więc wybrać SELECT, a następnie DELETE, które są 2 zapytaniami, podczas gdy możesz to zrobić w jednym rodzimym DELETE. Dlaczego jest zbędny, jeśli chodzi o WZP? – sura2k