powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate @LazyCollection
24 сообщений из 24, страница 1 из 1
Hibernate @LazyCollection
    #40029252
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Documentation:

@LazyCollection - The @LazyCollection annotation is used to specify the lazy fetching behavior of a given collection. The possible values are given by the LazyCollectionOption enumeration:

TRUE - Load it when the state is requested.
FALSE - Eagerly load it.
EXTRA - Prefer extra queries over full collection loading.

The TRUE and FALSE values are deprecated since you should be using the JPA FetchType attribute of the @ElementCollection, @OneToMany, or @ManyToMany collection.

The EXTRA value has no equivalent in the JPA specification, and it’s used to avoid loading the entire collection even when the collection is accessed for the first time. Each element is fetched individually using a secondary query .


Entities:
Код: 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.
@Entity(name = "Department9")
@Table(name = "Departments9")
class Department {

	@Id
	private Long id;
	@OneToMany(mappedBy = "department", cascade = CascadeType.ALL)
	@OrderColumn(name = "order_id")
	@LazyCollection(LazyCollectionOption.EXTRA)
	private List<Employee> employees = new ArrayList<>();

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public List<Employee> getEmployees() {
		return employees;
	}
	public void setEmployees(List<Employee> employees) {
		this.employees = employees;
	}

}

@Entity(name = "Employee11")
@Table(name = "Employees11")
class Employee {

	@Id
	private Long id;
	@NaturalId
	private String username;
	@ManyToOne(fetch = FetchType.LAZY)
	private Department department;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public Department getDepartment() {
		return department;
	}
	public void setDepartment(Department department) {
		this.department = department;
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", username=" + username + "]";
	}

}


Code:
Код: 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.
		doInHibernateWithDefaultPersistanceUnit(entityManager -> {

			Query query = entityManager.createQuery("delete from Employee11");
			query.executeUpdate();
			Query query2 = entityManager.createQuery("delete from Department9");
			query2.executeUpdate();

			Department department = new Department();
			department.setId(1L);

			Employee employee1 = new Employee();
			Employee employee2 = new Employee();
			Employee employee3 = new Employee();
			employee1.setId(1L);
			employee1.setDepartment(department);
			employee1.setUsername("Employee1");
			employee2.setId(2L);
			employee2.setDepartment(department);
			employee2.setUsername("Employee2");
			employee3.setId(3L);
			employee3.setDepartment(department);
			employee3.setUsername("Employee3");
			
			department.getEmployees().add(employee1);
			department.getEmployees().add(employee2);
			department.getEmployees().add(employee3);

			entityManager.persist(department);

			entityManager.flush();
			entityManager.clear();

			@SuppressWarnings("unused")
			Department department2 = entityManager.find(Department.class, 1L);
			int employeeCount = department.getEmployees().size();
			System.out.println("Total employees:" + employeeCount);
			for(int i = 0; i < employeeCount; i++ ) {
				System.out.printf( "Fetched employee: %s\n", department.getEmployees().get(i).getUsername());
			}

		});


Console (output):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Hibernate: delete from Employees11
Hibernate: delete from Departments9
Hibernate: insert into Departments9 (id) values (?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: select department0_.id as id1_60_0_ from Departments9 department0_ where department0_.id=?
Total employees:3
Fetched employee: Employee1
Fetched employee: Employee2
Fetched employee: Employee3



Если я все правильно понимаю, то при использовании
Код: java
1.
2.
@LazyCollection(LazyCollectionOption.EXTRA) 
private List<Employee> employees = new ArrayList<>();


Когда мы тянем из базы Department entity
Код: java
1.
Department department2 = entityManager.find(Department.class, 1L);


то будет задействован Lazy fething (employees не подтянутся).
Но потом когда мы к ним постучимся, они должны дергаться по одной штуке:
Код: java
1.
2.
3.
4.
5.
int employeeCount = department.getEmployees().size();
System.out.println("Total employees:" + employeeCount);
for(int i = 0; i < employeeCount; i++ ) {
	System.out.printf( "Fetched employee: %s\n", department.getEmployees().get(i).getUsername());
}



В логе я вижу один select, который соответствует Lazy fetching :
Код: java
1.
Hibernate: select department0_.id as id1_60_0_ from Departments9 department0_ where department0_.id=?


Но не вижу три дополнительных селекта.
При этом данные по Employees оторбажаются.

Куда пропали три дополнительные selects? Или тут все таки был Eager fetching?
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029254
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переписал немного код:
Код: java
1.
2.
3.
4.
5.
6.
...
Department department2 = entityManager.find(Department.class, 1L);
System.out.println(department2.getEmployees().get(0));
System.out.println(department2.getEmployees().get(1));
System.out.println(department2.getEmployees().get(2));
...


Теперь вывод такой:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Hibernate: delete from Employees11
Hibernate: delete from Departments9
Hibernate: insert into Departments9 (id) values (?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: select department0_.id as id1_60_0_ from Departments9 department0_ where department0_.id=?
Hibernate: select employee0_.id as id1_64_0_, employee0_.department_id as departme3_64_0_, employee0_.username as username2_64_0_ from Employees11 employee0_ where employee0_.department_id=? and employee0_.order_id=?
Employee [id=1, username=Employee1]
Hibernate: select employee0_.id as id1_64_0_, employee0_.department_id as departme3_64_0_, employee0_.username as username2_64_0_ from Employees11 employee0_ where employee0_.department_id=? and employee0_.order_id=?
Employee [id=2, username=Employee2]
Hibernate: select employee0_.id as id1_64_0_, employee0_.department_id as departme3_64_0_, employee0_.username as username2_64_0_ from Employees11 employee0_ where employee0_.department_id=? and employee0_.order_id=?
Employee [id=3, username=Employee3]


Теперь все логично, но не понятно как работает первый вариант.
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029256
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Материал взят отсюда - https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#fetching-LazyCollection

И там вывод должен быть таким:
Код: 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.
SELECT
    max(order_id) + 1
FROM
    Employee
WHERE
    department_id = ?

-- binding parameter [1] as [BIGINT] - [1]

SELECT
    e.id as id1_1_0_,
    e.department_id as departme3_1_0_,
    e.username as username2_1_0_
FROM
    Employee e
WHERE
    e.department_id=?
    AND e.order_id=?

-- binding parameter [1] as [BIGINT]  - [1]
-- binding parameter [2] as [INTEGER] - [0]

SELECT
    e.id as id1_1_0_,
    e.department_id as departme3_1_0_,
    e.username as username2_1_0_
FROM
    Employee e
WHERE
    e.department_id=?
    AND e.order_id=?

-- binding parameter [1] as [BIGINT]  - [1]
-- binding parameter [2] as [INTEGER] - [1]

SELECT
    e.id as id1_1_0_,
    e.department_id as departme3_1_0_,
    e.username as username2_1_0_
FROM
    Employee e
WHERE
    e.department_id=?
    AND e.order_id=?

-- binding parameter [1] as [BIGINT]  - [1]
-- binding parameter [2] as [INTEGER] - [2]


Т.е. получается кроме трех дополнительных selects не хватает еще одного,
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
    max(order_id) + 1
FROM
    Employee
WHERE
    department_id = ?

-- binding parameter [1] as [BIGINT] - [1]


который выполняется при:
Код: java
1.
int employeeCount = department.getEmployees().size();
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029265
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал, тут про @LazyCollection. Пишут, что эта штука 300 лет никому не нужна, так что можно забыть про нее.
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029266
Псевдомизантроп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
...
Department department = new Department();
...
int employeeCount = department.getEmployees().size();
...



A Hibernate в курсе, что переменная department - это entity?
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029269
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Псевдомизантроп, ну да. Я ему вроде все понятно объяснил (см. приложенный код):
Код: 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.
@Entity(name = "Department9")
@Table(name = "Departments9")
class Department {

	@Id
	private Long id;
	@OneToMany(mappedBy = "department", cascade = CascadeType.ALL)
	@OrderColumn(name = "order_id")
	@LazyCollection(LazyCollectionOption.EXTRA)
	private List<Employee> employees = new ArrayList<>();

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public List<Employee> getEmployees() {
		return employees;
	}
	public void setEmployees(List<Employee> employees) {
		this.employees = employees;
	}

}


Причем когда я немного переписал код (опять же см. приложенный код), то дополнительные seelcts появились.
Я подозреваю, что все работает, только логи не выводятся.

В любом случае, насколько я понял эта аннотация малоприменима. С помощью нее конечно можно узнать размер коллекции (не вытаскивая ее всю из базы), но где это можно применить - хз.
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029270
Псевдомизантроп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,

в чём принципиальная разница между переменными department и department2?
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029271
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переменная department создается при пустой базе, наполняется содержимым и сохраняется в бд.
Потом с помощью
Код: java
1.
2.
entityManager.flush();
entityManager.clear();


чиститься контекст, чтоб из кэша не читать.
А потом она же вычитывается из БД в переменную department2.

Почему переменные по разном называются? - я пока только разбираю Hibernate,
и не до конца уверен, что можно в туже переменную вычитывать новое значение, не будет ли там каких конфликтов(вроде не должно ничего такого быть, но все же... перестраховываюсь кароче).
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029273
Псевдомизантроп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen

Переменная department создается

вычитывается из БД в переменную department2

Выделил ключевое.

Почитай про persistent context, как обычные java объекты становятся entity, про entity lifecycle.
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029275
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это я более менее знаю.
Когда создали новую сущность у нее статус - transient (в базе ее нет пока, йадишник может быть, может не быть).
После такго как сделали entityManager.persist(entity) - перешла в статус "managed" или "persistent (есть айдишник, сохранена в бд, лежит в кэше первого уровня)"
Когда сделали entityManager.сlear() - она стала "detached" (лежит в базе с айдишником, но не связана с нашей локальной переменной, в кэше первого левела отсутствует).
Когда мы делаем entityManager.find(entity, id) она тянется из базы (выполняется select) и она снова становиться "managed".

Вроде все правильно понимаю, но на пример это помойму не влияет. Или не так себе все представляю, как должно быть?
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029278
Псевдомизантроп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen

После такго как сделали entityManager.persist(entity) - перешла в статус "managed" или "persistent (есть айдишник, сохранена в бд, лежит в кэше первого уровня)"


Что в этот момент происходит с точки зрения объектов и ссылок на них (переменных)?
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029279
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если правильно помню, то если объект лежит в кэше на момент запроса, то вернется тот же объект (Ссылка не поменятеся). Но если в кэше нет - будет создан новый (присвоена новая ссылка). Но опять же не уверен точно.
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029280
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если так, то да, получается можно было бы не создавать вторую переменную. Но это второстепенное, это я потом еще раз перечитаю.
Больше интересен сам пример, который описал, почему так работает аннотация @LazyCollection?
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029281
Псевдомизантроп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen
будет создан новый (присвоена новая ссылка)


Чему именно будет присвоена новая ссылка?
Происходит ли это с переменной department?
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029283
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у нас есть переменная
Код: java
1.
2.
3.
4.
[/SRC] department в статусе "managed", то ей будет присвоена таже ссылка, тоесть фактически ничего не произойдет.
[SRC java]Department department = new Department(id); (ссылка1)
entityManager.persist(department);
department = entityManger.find() = (ссылка1)



Если же department в статусе detached, то переменной присвоится новая ссылка:
Department department = entityManger.find() = (ссылка2)
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029284
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у нас есть переменная department в статусе "managed", то ей будет присвоена та же ссылка, то есть фактически ничего не произойдет.
Код: java
1.
2.
3.
 java]Department department = new Department(id); (ссылка1)
entityManager.persist(department);
department = entityManger.find() = (ссылка1)


Если же department в статусе detached, то переменной присвоится новая ссылка:
Код: java
1.
Department department = entityManger.find() = (ссылка2) 
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029285
Псевдомизантроп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen
Если у нас есть переменная department в статусе "managed", то ей будет присвоена та же ссылка, то есть фактически ничего не произойдет.
Код: java
1.
2.
3.
 java]Department department = new Department(id); (ссылка1)
entityManager.persist(department);
department = entityManger.find() = (ссылка1)


Если же department в статусе detached, то переменной присвоится новая ссылка:
Код: java
1.
Department department = entityManger.find() = (ссылка2) 



Правильно


Теперь посмотри внимательно на самый первый пост с исходным кодом твоего примера. Что там происхожит с переменной department?
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029288
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот(добавил вывод ссылок):
Код: 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.
		doInHibernateWithDefaultPersistanceUnit(entityManager -> {

			Query query = entityManager.createQuery("delete from Employee11");
			query.executeUpdate();
			Query query2 = entityManager.createQuery("delete from Department9");
			query2.executeUpdate();

			Department department = new Department();
			System.out.println("Department reference before: " + department);
			department.setId(1L);

			Employee employee1 = new Employee();
			Employee employee2 = new Employee();
			Employee employee3 = new Employee();
			employee1.setId(1L);
			employee1.setDepartment(department);
			employee1.setUsername("Employee1");
			employee2.setId(2L);
			employee2.setDepartment(department);
			employee2.setUsername("Employee2");
			employee3.setId(3L);
			employee3.setDepartment(department);
			employee3.setUsername("Employee3");
			
			department.getEmployees().add(employee1);
			department.getEmployees().add(employee2);
			department.getEmployees().add(employee3);

			entityManager.persist(department);

			entityManager.flush();
			entityManager.clear();

			Department department2 = entityManager.find(Department.class, 1L); 
			System.out.println("Department reference after: " + department2);
			

			int employeeCount = department.getEmployees().size();
			System.out.println("Total employees:" + employeeCount);
			for(int i = 0; i < employeeCount; i++ ) {
				System.out.printf( "Fetched employee: %s\n", department.getEmployees().get(i).getUsername());
			}

		});


Результат:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Hibernate: delete from Employees11
Hibernate: delete from Departments9

Department reference before: by.pva.hibernate.part01.fetching.static_fetching.lazycollection_annotation.Department@7977f046

Hibernate: insert into Departments9 (id) values (?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: select department0_.id as id1_60_0_ from Departments9 department0_ where department0_.id=?

Department reference after: by.pva.hibernate.part01.fetching.static_fetching.lazycollection_annotation.Department@771d4db

Hibernate: select employee0_.id as id1_64_0_, employee0_.department_id as departme3_64_0_, employee0_.username as username2_64_0_ from Employees11 employee0_ where employee0_.department_id=? and employee0_.order_id=?
Employee [id=1, username=Employee1]
Hibernate: select employee0_.id as id1_64_0_, employee0_.department_id as departme3_64_0_, employee0_.username as username2_64_0_ from Employees11 employee0_ where employee0_.department_id=? and employee0_.order_id=?
Employee [id=2, username=Employee2]
Hibernate: select employee0_.id as id1_64_0_, employee0_.department_id as departme3_64_0_, employee0_.username as username2_64_0_ from Employees11 employee0_ where employee0_.department_id=? and employee0_.order_id=?
Employee [id=3, username=Employee3]



Ссылки разные.
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029289
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, не тот лог выдал. Вот что получилось, но там также разные ссылки, я ж кэш почистил:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Hibernate: delete from Employees11
Hibernate: delete from Departments9
Department reference before: by.pva.hibernate.part01.fetching.static_fetching.lazycollection_annotation.Department@86bf90b
Hibernate: insert into Departments9 (id) values (?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: insert into Employees11 (department_id, username, id) values (?, ?, ?)
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: update Employees11 set order_id=? where id=?
Hibernate: select department0_.id as id1_60_0_ from Departments9 department0_ where department0_.id=?
Department reference after: by.pva.hibernate.part01.fetching.static_fetching.lazycollection_annotation.Department@4e6280de
Total employees:3
Fetched employee: Employee1
Fetched employee: Employee2
Fetched employee: Employee3

...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029290
Псевдомизантроп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
итого, есть переменная department, есть переменная department2.
указывают, как выяснилось, на разные объекты.

Что это за объекты, что о них знает hibernate?
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029293
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все! Я ж ем у говорю:
Код: java
1.
Department department2 = entityManager.find(Department.class, 1L);


Т.е. он знает класс, знает id, знает mapping + все аннотации класса. Я не понимаю, что ты хочешь сказать ...
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029294
Псевдомизантроп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Department department2 = entityManager.find(Department.class, 1L);
int employeeCount = department .getEmployees().size();
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029295
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, я на сегодня забодался уже, пойду отдыхать. Спасибо за попытку помочь, хотя бы укрепился в некоторых знаниях.
ps. Я пока только разбираюсь, возможно не догоняю пока всего...
...
Рейтинг: 0 / 0
Hibernate @LazyCollection
    #40029296
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты садист ) Можно было бы сразу так ) Спасибо.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate @LazyCollection
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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