powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / PersistentObjectException: detached entity passed to persist
4 сообщений из 4, страница 1 из 1
PersistentObjectException: detached entity passed to persist
    #38534121
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени!
Вот мой ORM:
Код: xml
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.
<package>com.bs.amg.test</package>
	<access>PROPERTY</access>
	<sequence-generator name="PK_FILES" sequence-name="FILES_ID_SEQ" allocation-size="1" initial-value="1" />
	<sequence-generator name="PK_COLUMNS" sequence-name="COLUMNS_ID_SEQ" allocation-size="1" initial-value="1" />
	<entity class="com.bs.amg.test.File" name="File" metadata-complete="false">
		<table name="FILES"/>
		<attributes>
			<id name="id">
				<column name="ID" nullable="false"/>
				<generated-value strategy="SEQUENCE" generator="PK_FILES" />
			</id>
			<basic name="URI" optional="true">
				<column name="URI"/>
			</basic>
			<basic name="delimiter" optional="true">
				<column name="DELIMITER"/>
			</basic>
			<basic name="title">
				<column name="IS_TITLE"/>
			</basic>
			<basic name="colCount">
				<column name="COL_COUNT"/>
			</basic>
			<one-to-many name="columns" mapped-by="file" target-entity="com.bs.amg.test.FileColumn" fetch="LAZY">
				<cascade>
					<cascade-refresh/>
				</cascade>
			</one-to-many>
		</attributes>
	</entity>
	<entity class="com.bs.amg.test.FileColumn" name="FileColumn" metadata-complete="false">
		<table name="COLUMNS"/>
		<attributes>
			<id name="id">
				<column name="ID" nullable="false"/>
				<generated-value strategy="SEQUENCE" generator="PK_COLUMNS"/>
			</id>
			<basic name="position" optional="true">
				<column name="POSITION"/>
			</basic>
			<basic name="title" optional="true">
				<column name="TITLE"/>
			</basic>
			<basic name="type" optional="true">
				<column name="TYPE"/>
			</basic>
			<many-to-one name="file" optional="true" fetch="LAZY" target-entity="com.bs.amg.test.File">
				<cascade>
					<cascade-refresh/>
				</cascade>
			</many-to-one>
		</attributes>
	</entity>



Ошибка возникает, когда происходит вызов persistence():
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@PersistenceContext( unitName = "manager1")
EntityManager entityManager;

private File file;

private File save( File file ) throws IOException {
	entityManager.persist( file );

	return file;
}

public boolean createFile( String URI ) throws IOException {
	file = File.getInstance( URI ); // происходит правильное заполнение полей File-а
	file = save( file );

	return true;
}



Вот самая первая (нижайшая по логу) причина:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.bs.amg.test.persistence.File
	at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:141) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
	at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
	at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:725) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
	at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:701) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
	at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:705) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:853) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
	... 60 more



Тут говорят, что неправильная инициализация при связях между зависимостями (OneToMany) между классами (в моем случае File и FileColumn). А ниже - про transient и detached объекты.... А что то не понял в чем ошибка...
...
Рейтинг: 0 / 0
PersistentObjectException: detached entity passed to persist
    #38534129
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю, что id у File после создания не null, а 0 или -1. Поэтому хибернейт считает что этот объект detached и отказывается его создавать.
...
Рейтинг: 0 / 0
PersistentObjectException: detached entity passed to persist
    #38534134
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПодозреваю, что id у File после создания не null, а 0 или -1. Поэтому хибернейт считает что этот объект detached и отказывается его создавать.

ай-ай-ай... Извиняюсь, опять по невнимательности. Я принудительно в
Код: java
1.
File.GetInstance()


устанавливаю Id в 1-цу)
...
Рейтинг: 0 / 0
PersistentObjectException: detached entity passed to persist
    #38534148
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПодозреваю, что id у File после создания не null, а 0 или -1. Поэтому хибернейт считает что этот объект detached и отказывается его создавать.

Спасибо!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / PersistentObjectException: detached entity passed to persist
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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