powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate - delete detached entity
5 сообщений из 5, страница 1 из 1
Hibernate - delete detached entity
    #40021416
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В доке по хиберу написано ( https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#pc-remove)
Код: java
1.
2.
3.
4.
5.
Hibernate itself can handle deleting entities in detached state. JPA, however, disallows this behavior.

The implication here is that the entity instance passed to the org.hibernate.
Session delete method can be either in managed or detached state, 
while the entity instance passed to remove on javax.persistence.EntityManager must be in the managed state.



Тестовый код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Id;
import javax.persistence.Persistence;

import org.hibernate.Session;


public class Test01 {
	public static void main(String[] args) {
		EntityManagerFactory entityManagerFactory = Persistence
				.createEntityManagerFactory("HBM");

		EntityManager entityManager = entityManagerFactory.createEntityManager();
		entityManager.getTransaction().begin();

		long ID = 1L;
		
		SomeEntity en = new SomeEntity();
		en.setId(ID);
		en.setName("Name");
		entityManager.persist(en);
		
		entityManager.flush();
		entityManager.clear();
		
		Session session = entityManager.unwrap(Session.class);
		SomeEntity en2 = session.get(SomeEntity.class, ID);
	
		System.out.println(en2);
		session.detach(en2);
		session.delete(en2);
		
		entityManager.getTransaction().commit();
		entityManager.close();
		entityManagerFactory.close();
	}
}

@Entity
class SomeEntity {
	
	@Id
	private long id;
	private String name;
	
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "SomeEntity [id=" + id + ", name=" + name + "]";
	}

}



Если я правильно понял, то Session.delete() метод должен удалять как persistent, так и detached entities.
Но у меня вываливается ошибка:
Код: java
1.
Exception in thread "main" java.lang.IllegalArgumentException: Removing a detached instance by.pva.hibernate.part01._tests.SomeEntity#1
...
Рейтинг: 0 / 0
Hibernate - delete detached entity
    #40021423
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,
Отсоединил от бд и потом удаляем? Какоц смысл?
...
Рейтинг: 0 / 0
Hibernate - delete detached entity
    #40021431
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересует знчение фразы "Hibernate itself can handle deleting entities in detached state."

session.detach() вроде бы переводит entity как раз таки в detached состояние.
Код: java
1.
2.
3.
void javax.persistence.EntityManager.detach(Object entity)

Remove the given entity from the persistence context, causing a managed entity to become detached
...
Рейтинг: 0 / 0
Hibernate - delete detached entity
    #40021434
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача скорее теоретическая, чем практическая. Может оно никогда и не понадобится, просто интересно разобраться.
...
Рейтинг: 0 / 0
Hibernate - delete detached entity
    #40021441
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen
Задача скорее теоретическая, чем практическая. Может оно никогда и не понадобится, просто интересно разобраться.
по опыту, то что никому не нужно работает плохо.
"Что будет если кошку помыть в стиральной машинке?"
Найди практический вопрос.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate - delete detached entity
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]