Liệu loại bỏ (thực thể Object) phương pháp EntityManager làm việc chỉ trên các đối tượng nhận được từ tìm() phương pháp?javax.persistence.Entitymanager: loại bỏ phương pháp()
Tôi có đoạn mã sau:
public void deletePerson() {
EntityManager em = getEntityManager();
Person p = new Person("x", "y", 200);
em.remove(p);
}
Nhưng nó không phải là loại bỏ các mục cụ thể từ cơ sở dữ liệu.
Khi tôi đã cố gắng một cái gì đó như dưới đây:
public void deletePerson() {
EntityManager em = getEntityManager();
Person p = em.find(Person.class, 200);
em.remove(p);
}
Nó làm việc tốt.
Với tuyên bố trên, là em.remove (em.merge (người)) - nơi người đã được lấy từ cơ sở dữ liệu - một cách chính xác để xóa đối tượng ? – dendini
@dendini Không, nếu 'người' đã được lấy ra từ cơ sở dữ liệu, thì nó có nghĩa là nó tồn tại trong cơ sở dữ liệu. Vì vậy, trong trường hợp này, bạn có thể gọi trực tiếp 'em.remove (người)'. –
Vì vậy, bạn cần CHỌN rồi XÓA mà là 2 truy vấn trong khi bạn có thể làm điều đó trong một DELETE bản địa duy nhất. Tại sao dư thừa khi nói đến JPA? – sura2k