powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibertnate - как правильно дополнить класс ?
9 сообщений из 9, страница 1 из 1
Hibertnate - как правильно дополнить класс ?
    #38451247
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !
Организовал два класса - "один ко многом"

Хочу заполнять принадлежность к родителю (ListAddress) в момент инициализации дочери
Address adRecord11 = new Address(ulRecord1 - это родитель);
Соорудил доп. конструктор ссылкой на Settep дочери и ссылкой на доп. Settep родителя
где описано дополнение массива

Код: java
1.
2.
3.
4.
5.
6.
	public void setItemAddress(Address ItemAddress) {
		if(this.ListAddress==null){
			this.ListAddress = new ArrayList<Address>();
		}
		this.ListAddress.add(ItemAddress);
	}


Пролучилось, но такая загрузка не совместима с классом Hibernatе.
Подскажте как верно реорганизовать классы

Код: 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.
package Hibernate.Oracle;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

@Entity
@Table(name="Address")
public class Address implements Serializable {

	private int Num;
	private UserList User;

	public Address(){
	}

	public Address(UserList User){
		setUser(User);
		//User.setItemAddress(this); - так работает на совместимость.
	}

	@Id
	@Column(name="Num")
	@TableGenerator(name="GenerateTab",
					table="GenerateKeys",
					pkColumnName="PrimaryKey",
					pkColumnValue="Address",
					allocationSize=1
					)
	@GeneratedValue(strategy=GenerationType.TABLE,
					generator="GenerateTab"
					)
	public int getNum() {
		return Num;
	}
	public void setNum(int num) {
		this.Num = num;
	}

	@ManyToOne
	@JoinColumn(name="tab")
	public UserList getUser() {
		return User;
	}
	public void setUser(UserList user) {
		this.User = user;
		User.setItemAddress(this); - так не работает на совсетимость
                                                                 Хочу писать правильно в Settepe !!!!

	}

}



Код: 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.
package Hibernate.Oracle;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Id;
import javax.persistence.TableGenerator;

@Entity
@Table(name="UserList")
public class UserList implements Serializable {
	
	private int    Tab;
	private List<Address> ListAddress;
	
	@Id
	@Column(name="Tab")
	@TableGenerator(name="GenerateTab",
					table="GenerateKeys",
					pkColumnName="PrimaryKey",
					pkColumnValue="UserList",
					allocationSize=1
					)
	@GeneratedValue(strategy=GenerationType.TABLE,
					generator="GenerateTab"
					)
	public int getTab() {
		return Tab;
		}
	public void setTab(int Tab) {
		this.Tab = Tab;
	}

	@OneToMany(targetEntity=Address.class,
			mappedBy="user",
			cascade=CascadeType.ALL,
			fetch=FetchType.EAGER
			)
	public List<Address> getListAddress() {
		return ListAddress;
	}
	public void setListAddress(List<Address> listAddress) {
		this.ListAddress = listAddress;
	}

	public void setItemAddress(Address ItemAddress) {
		if(this.ListAddress==null){
			this.ListAddress = new ArrayList<Address>();
		}
		this.ListAddress.add(ItemAddress);
	}
}



Код: 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.
package Hibernate.Oracle;

import java.sql.Date;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class ExeUserList {

	public static void main(String[] args) {
		String  sUser = "SOS"; 
		String  sWord = "SOS_20130901";
		Boolean bSave = false;
		AnnotationConfiguration config = new AnnotationConfiguration();
		config.configure("hibernate.cfg.xml");
		config.setProperty("hibernate.connection.username",sUser);
		config.setProperty("hibernate.connection.password",sWord);
		config.addAnnotatedClass(UserList.class);
		config.addAnnotatedClass(Address.class);
		if(bSave){
			new SchemaExport(config).create(true, true);
		}
		SessionFactory factory = config.buildSessionFactory(); 
		Session session = factory.getCurrentSession();
		session.beginTransaction();
		if(bSave){
			UserList ulRecord1  = new UserList();
			Address  adRecord11 = new Address(ulRecord1); - момент инициализаци дочери присваиваем опре. родителя
			Address  adRecord12 = new Address(ulRecord1);
			Address  adRecord13 = new Address(ulRecord1);
			session.saveOrUpdate(ulRecord1);
			session.saveOrUpdate(adRecord11);
			session.saveOrUpdate(adRecord12);
			session.saveOrUpdate(adRecord13);
			for(Address Item : ulRecord1.getListAddress()){
	            System.out.println(Item.getUser().getTab());
	            }
	        }else{
	        	UserList ulRecord0 = new UserList();
		        ulRecord0=(UserList) session.get(UserList.class,1);
		        for(Address Item : ulRecord0.getListAddress()){
		            System.out.println(Item.getUser().getTab());
		            }
			}
		session.getTransaction().commit();
	}
}
...
Рейтинг: 0 / 0
Hibertnate - как правильно дополнить класс ?
    #38451622
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

В целом получилось как хотелось - НО ........??????

1.Оставлен для совместимости с вызовами Hibernate и закрыт директивой privat от посторонных глаз
private void setListAddress(List<Address> listAddress)

2.Организован как альтернатива пункту 1 с измененной сигнатурой (не хотел менять название)
public void setListAddress(List<Address> listAddress,Boolean Key)

3.Запись подчиненных запись делаю через дочь
public void setItemAddress(Address ItemAddress) {
if(this.ListAddress==null){
this.ListAddress = new ArrayList<Address>();
}
this.ListAddress.add(ItemAddress);
}

Чего не понял совсем - как Hibernate видит приватный метод ? (пункт 1)
Уважаемые знатоки прокоментируйте пожалуйств этот момент.
Где собака порылась ?

Класс вызова
Код: 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.
package Hibernate.Oracle;

import java.math.BigDecimal;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.hibernate.Criteria;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.cfg.Configuration;   


public class ExeUserList {

	public static void main(String[] args) {
		String  sUser = "XXX"; 
		String  sWord = "XXX";
		Boolean bSave = false;
		AnnotationConfiguration config = new AnnotationConfiguration();
		config.configure("hibernate.cfg.xml");
		config.setProperty("hibernate.connection.username",sUser);
		config.setProperty("hibernate.connection.password",sWord);
		config.addAnnotatedClass(UserList.class);
		config.addAnnotatedClass(Address.class);
		if(bSave){
			new SchemaExport(config).create(true, true);
		}
		SessionFactory factory = config.buildSessionFactory(); 
		Session session = factory.getCurrentSession();
		session.beginTransaction();
		UserList ulRecord  = new UserList();
		if(bSave){
			Address adRecord11 = new Address(ulRecord);
			Address adRecord12 = new Address();
			adRecord12.setUser(ulRecord);
			Address adRecord13 = new Address();
			Address adRecord14 = new Address();
			List<Address> adList = new ArrayList<Address>();  
			adList.add(adRecord13);
            adList.add(adRecord14);
			ulRecord.setListAddress(adList,true);
			session.saveOrUpdate(ulRecord);
			session.saveOrUpdate(adRecord11);
			session.saveOrUpdate(adRecord12);
			session.saveOrUpdate(adRecord13);
			session.saveOrUpdate(adRecord14);
			}else{
		        ulRecord=(UserList) session.get(UserList.class,1);
		        }
		for(Address Item : ulRecord.getListAddress()){
            System.out.printf("%d  _ \n", Item.getNum());
            }
		session.getTransaction().commit();
		}
	}



Класс родителя
Код: 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.
66.
package Hibernate.Oracle;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Id;
import javax.persistence.TableGenerator;

@Entity
@Table(name="UserList")
public class UserList implements Serializable {
	
	private int    Tab;
	private List<Address> ListAddress;
	
	@Id
	@Column(name="Tab")
	@TableGenerator(name="GenerateTab",
					table="GenerateKeys",
					pkColumnName="PrimaryKey",
					pkColumnValue="UserList",
					allocationSize=1
					)
	@GeneratedValue(strategy=GenerationType.TABLE,
					generator="GenerateTab"
					)
	public int getTab() {
		return Tab;
		}
	public void setTab(int Tab) {
		this.Tab = Tab;
	}

	@OneToMany(targetEntity=Address.class,
			mappedBy="user",
			cascade=CascadeType.ALL,
			fetch=FetchType.EAGER
			)
	public List<Address> getListAddress() {
		return ListAddress;
	}
	private void setListAddress(List<Address> listAddress) {
	}

	public void setListAddress(List<Address> listAddress,Boolean Key) {
		if(Key){
			this.ListAddress = listAddress;
		}
	}

	public void setItemAddress(Address ItemAddress) {
		if(this.ListAddress==null){
			this.ListAddress = new ArrayList<Address>();
		}
		this.ListAddress.add(ItemAddress);
	}
}



Класс дочери
Код: 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.
package Hibernate.Oracle;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

@Entity
@Table(name="Address")
public class Address implements Serializable {

	private int Num;
	private UserList User;

	public Address(){
	}

	public Address(UserList User){
		setUser(User);
	}

	@Id
	@Column(name="Num")
	@TableGenerator(name="GenerateTab",
					table="GenerateKeys",
					pkColumnName="PrimaryKey",
					pkColumnValue="Address",
					allocationSize=1
					)
	@GeneratedValue(strategy=GenerationType.TABLE,
					generator="GenerateTab"
					)
	public int getNum() {
		return Num;
	}
	public void setNum(int num) {
		this.Num = num;
	}

	@ManyToOne
	@JoinColumn(name="tab")
	public UserList getUser() {
		return User;
	}
	public void setUser(UserList user) {
		this.User = user;
		User.setItemAddress(this);
	}

}
...
Рейтинг: 0 / 0
Hibertnate - как правильно дополнить класс ?
    #38452613
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X
Код: java
1.
2.
3.
4.
5.
6.
7.
Address adRecord11 = new Address(ulRecord);
			Address adRecord12 = new Address();
			adRecord12.setUser(ulRecord);
			Address adRecord13 = new Address();
			Address adRecord14 = new Address();
			List<Address> adList = new ArrayList<Address>();  
			adList.add(adRecord13);


- почему не сущность User, а UserList?
- почему не сделать как в факе
Код: java
1.
2.
3.
4.
5.
6.
Book b = new Book();
b.setName("ВойнаИмир");
Autor a = new Autor();
a.setName("Иванов");
b.addAutor(a);
session.saveOrUpdate(b);
...
Рейтинг: 0 / 0
Hibertnate - как правильно дополнить класс ?
    #38452649
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Вы ни одной ошибки не привели. Приходится по коду угадывать. Используйте @Transient чтобы сделать отдельные свойства не персистентными. Либо используйте маппинг исключительно на полях, чтобы хибер не пробовал персистить вычислительные свойства.
...
Рейтинг: 0 / 0
Hibertnate - как правильно дополнить класс ?
    #38453798
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczHOME_X,
Вы ни одной ошибки не привели


Пардон - исправляюсь
Код: 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.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
21:04:14,375  INFO Version:15 - Hibernate Annotations 3.4.0.GA
21:04:14,391  INFO Environment:560 - Hibernate 3.3.2.GA
21:04:14,391  INFO Environment:593 - hibernate.properties not found
21:04:14,391  INFO Environment:771 - Bytecode provider name : javassist
21:04:14,391  INFO Environment:652 - using JDK 1.4 java.sql.Timestamp handling
21:04:14,469  INFO Version:14 - Hibernate Commons Annotations 3.1.0.GA
21:04:14,469  INFO Configuration:1474 - configuring from resource: hibernate.cfg.xml
21:04:14,469  INFO Configuration:1451 - Configuration resource: hibernate.cfg.xml
21:04:14,547  INFO Configuration:1589 - Configured SessionFactory: null
21:04:14,563  INFO HibernateSearchEventListenerRegister:53 - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
21:04:14,609  INFO AnnotationBinder:419 - Binding entity from annotated class: Hibernate.Oracle.UserList
21:04:14,641  INFO EntityBinder:422 - Bind entity Hibernate.Oracle.UserList on table UserList
21:04:14,719  INFO AnnotationBinder:419 - Binding entity from annotated class: Hibernate.Oracle.Address
21:04:14,719  INFO EntityBinder:422 - Bind entity Hibernate.Oracle.Address on table Address
21:04:14,781  INFO CollectionBinder:650 - Mapping collection: Hibernate.Oracle.UserList.listAddress -> Address
21:04:14,781  INFO AnnotationConfiguration:369 - Hibernate Validator not found: ignoring
21:04:14,797  INFO DriverManagerConnectionProvider:64 - Using Hibernate built-in connection pool (not for production use!)
21:04:14,797  INFO DriverManagerConnectionProvider:65 - Hibernate connection pool size: 2
21:04:14,797  INFO DriverManagerConnectionProvider:68 - autocommit mode: false
21:04:14,906  INFO DriverManagerConnectionProvider:103 - using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@localhost:1521:INFOBANK
21:04:14,906  INFO DriverManagerConnectionProvider:109 - connection properties: {user=SOS, password=****}
21:04:15,124  INFO SettingsFactory:114 - RDBMS: Oracle, version: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
21:04:15,124  INFO SettingsFactory:115 - JDBC driver: Oracle JDBC driver, version: 11.2.0.1.0
21:04:15,155  INFO Dialect:175 - Using dialect: org.hibernate.dialect.Oracle10gDialect
21:04:15,155  INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
21:04:15,155  INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
21:04:15,155  INFO SettingsFactory:161 - Automatic flush during beforeCompletion(): disabled
21:04:15,155  INFO SettingsFactory:165 - Automatic session close at end of transaction: disabled
21:04:15,155  INFO SettingsFactory:172 - JDBC batch size: 15
21:04:15,155  INFO SettingsFactory:175 - JDBC batch updates for versioned data: disabled
21:04:15,155  INFO SettingsFactory:180 - Scrollable result sets: enabled
21:04:15,155  INFO SettingsFactory:188 - JDBC3 getGeneratedKeys(): disabled
21:04:15,155  INFO SettingsFactory:196 - Connection release mode: auto
21:04:15,155  INFO SettingsFactory:223 - Default batch fetch size: 1
21:04:15,155  INFO SettingsFactory:227 - Generate SQL with comments: disabled
21:04:15,155  INFO SettingsFactory:231 - Order SQL updates by primary key: disabled
21:04:15,171  INFO SettingsFactory:235 - Order SQL inserts for batching: disabled
21:04:15,171  INFO SettingsFactory:397 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
21:04:15,171  INFO ASTQueryTranslatorFactory:47 - Using ASTQueryTranslatorFactory
21:04:15,171  INFO SettingsFactory:243 - Query language substitutions: {}
21:04:15,171  INFO SettingsFactory:248 - JPA-QL strict compliance: disabled
21:04:15,171  INFO SettingsFactory:253 - Second-level cache: enabled
21:04:15,171  INFO SettingsFactory:257 - Query cache: disabled
21:04:15,171  INFO SettingsFactory:382 - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge
21:04:15,171  INFO RegionFactoryCacheProviderBridge:61 - Cache provider: org.hibernate.cache.NoCacheProvider
21:04:15,171  INFO SettingsFactory:267 - Optimize cache for minimal puts: disabled
21:04:15,171  INFO SettingsFactory:276 - Structured second-level cache entries: disabled
21:04:15,171  INFO SettingsFactory:296 - Echoing all SQL to stdout
21:04:15,171  INFO SettingsFactory:305 - Statistics: disabled
21:04:15,171  INFO SettingsFactory:309 - Deleted entity synthetic identifier rollback: disabled
21:04:15,171  INFO SettingsFactory:324 - Default entity-mode: pojo
21:04:15,171  INFO SettingsFactory:328 - Named query checking : enabled
21:04:15,218  INFO SessionFactoryImpl:193 - building session factory
21:04:15,375  INFO SessionFactoryObjectFactory:105 - Not binding factory to JNDI, no JNDI name configured
Hibernate: select userlist0_.Tab as Tab0_1_, listaddres1_.tab as tab3_, listaddres1_.Num as Num3_, listaddres1_.Num as Num1_0_, listaddres1_.tab as tab1_0_ from UserList userlist0_ left outer join Address listaddres1_ on userlist0_.Tab=listaddres1_.tab where userlist0_.Tab=?
21:04:15,624 ERROR LazyInitializationException:42 - illegal access to loading collection
org.hibernate.LazyInitializationException: illegal access to loading collection
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:363)
	at org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:205)
	at org.hibernate.collection.PersistentBag.add(PersistentBag.java:297)
	at Hibernate.Oracle.UserList.setItemAddress(UserList.java:69)
	at Hibernate.Oracle.Address.setUser(Address.java:57)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:66)
	at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:352)
	at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:232)
	at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3580)
	at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:152)
	at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:877)
	at org.hibernate.loader.Loader.doQuery(Loader.java:752)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
	at org.hibernate.loader.Loader.loadEntity(Loader.java:1885)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3062)
	at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
	at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:223)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:843)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:836)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
	at com.sun.proxy.$Proxy12.get(Unknown Source)
	at Hibernate.Oracle.ExeUserList.main(ExeUserList.java:59)
Exception in thread "main" 21:04:15,624  INFO DefaultLoadEventListener:134 - Error performing load command
org.hibernate.PropertyAccessException: Exception occurred inside setter of Hibernate.Oracle.Address.user
	at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:89)
	at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:352)
	at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:232)
	at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3580)
	at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:152)
	at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:877)
	at org.hibernate.loader.Loader.doQuery(Loader.java:752)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
	at org.hibernate.loader.Loader.loadEntity(Loader.java:1885)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3062)
	at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
	at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:223)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:843)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:836)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
	at com.sun.proxy.$Proxy12.get(Unknown Source)
	at Hibernate.Oracle.ExeUserList.main(ExeUserList.java:59)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:66)
	... 26 more
Caused by: org.hibernate.LazyInitializationException: illegal access to loading collection
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:363)
	at org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:205)
	at org.hibernate.collection.PersistentBag.add(PersistentBag.java:297)
	at Hibernate.Oracle.UserList.setItemAddress(UserList.java:69)
	at Hibernate.Oracle.Address.setUser(Address.java:57)
	... 31 more
org.hibernate.PropertyAccessException: Exception occurred inside setter of Hibernate.Oracle.Address.user
	at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:89)
	at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:352)
	at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:232)
	at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3580)
	at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:152)
	at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:877)
	at org.hibernate.loader.Loader.doQuery(Loader.java:752)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
	at org.hibernate.loader.Loader.loadEntity(Loader.java:1885)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
	at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3062)
	at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
	at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
	at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:223)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:843)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:836)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
	at com.sun.proxy.$Proxy12.get(Unknown Source)
	at Hibernate.Oracle.ExeUserList.main(ExeUserList.java:59)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:66)
	... 26 more
Caused by: org.hibernate.LazyInitializationException: illegal access to loading collection
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:363)
	at org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:205)
	at org.hibernate.collection.PersistentBag.add(PersistentBag.java:297)
	at Hibernate.Oracle.UserList.setItemAddress(UserList.java:69)
	at Hibernate.Oracle.Address.setUser(Address.java:57)
	... 31 more
...
Рейтинг: 0 / 0
Hibertnate - как правильно дополнить класс ?
    #38453827
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczHOME_X,
@Transient чтобы сделать отдельные свойства


Если я верно Вас понял ..
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@Transient
@OneToMany(targetEntity=Address.class,
		mappedBy="user",
		cascade=CascadeType.ALL,
		fetch=FetchType.EAGER
		)
public List<Address> getListAddress() {
	return ListAddress;
}
	
public void setItemAddress(Address ItemAddress) {
	if(this.ListAddress==null){
		this.ListAddress = new ArrayList<Address>();
	}
			this.ListAddress.add(ItemAddress);
	}


Но теперь Хибер игнорирует также процедуру setItemAddress, которая управляет массивом
Необходимо игнорировать только public void setListAddress
А из дочери пусть пишет .....(перенести в дочь я не могу - не корректно)
Или я не верно Вас понял - уточните пожалуйста на моем примере
...
Рейтинг: 0 / 0
Hibertnate - как правильно дополнить класс ?
    #38455116
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Господа - вопрос слишком глуп ?
Или отпимального решения нет ?
...
Рейтинг: 0 / 0
Hibertnate - как правильно дополнить класс ?
    #38455659
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XHOME_X,

Господа - вопрос слишком глуп ?
Или отпимального решения нет ?
Наверное мой вопрос тебе был слишком глуп.
...
Рейтинг: 0 / 0
Hibertnate - как правильно дополнить класс ?
    #38455736
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XГоспода - вопрос слишком глуп ?
Или отпимального решения нет ?
У вас одно и то же состояние - ListAddress замаплено через две разные ассоциации.
Нельзя ставить @Transient поверх @OneToMany.
У вас два свойства. listAddress и itemAddress. Одно из этих свойств нужно замапить на БД через OneToMany. Для этого свойства должен быть как getter так и setter. Другое свойство надо пометить как @Transient, чтобы Hibernate его не трогал. И использовать для собственных нужд. У этого свойства не обязательно должны быть все акцессоры.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibertnate - как правильно дополнить класс ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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