Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / PersistentObjectException: detached entity passed to persist / 4 сообщений из 4, страница 1 из 1
22.01.2014, 12:11
    #38534121
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PersistentObjectException: detached entity passed to persist
Доброго всем времени!
Вот мой 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
22.01.2014, 12:16
    #38534129
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PersistentObjectException: detached entity passed to persist
Подозреваю, что id у File после создания не null, а 0 или -1. Поэтому хибернейт считает что этот объект detached и отказывается его создавать.
...
Рейтинг: 0 / 0
22.01.2014, 12:21
    #38534134
NDAleksey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PersistentObjectException: detached entity passed to persist
BlazkowiczПодозреваю, что id у File после создания не null, а 0 или -1. Поэтому хибернейт считает что этот объект detached и отказывается его создавать.

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


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

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


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