powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: Nested Objects & Named Query
10 сообщений из 10, страница 1 из 1
Hibernate: Nested Objects & Named Query
    #33223687
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем и БОЛЬШОЙ ПРИВЕТ крутым хиберам.
Вот собсвтвенно такой вопросец. Можно ли объект, содержащий в себе другие объесты (описаные через component в hbm.xml) достать через Named Query?

В доках такого не нашел, а пляски с бубном пока положительного результату не дали.

Доступ к изменению схемы базы минимальный. Создание всяких там View не предусмотрено. А объект надо родить из данных с кучи таблиц (плюс условия).

А вот в хибере можно развлекаться как угодно - то есть описывать через component необязательно, можно как угодно. Хибер третий.

Спасибо.
...
Рейтинг: 0 / 0
Hibernate: Nested Objects & Named Query
    #33223830
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

hbm.xml в студию...
...
Рейтинг: 0 / 0
Hibernate: Nested Objects & Named Query
    #33223914
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
	< class  name="MatchRecord">
		<id name="num" type="long" >
			<generator  class ="assigned"/>
		</id>
		<property name="name" type="string" length="100"/>
		<property name="type" type="string" length="30"/> <!-- CONTENT_NAME -->
		<property name="sku" type="string" length="30"/>
		<property name="prognum" type="string" length="20"/>
		<property name="match_type" type="string" length="30"/> <!-- MATCHED CONTENT_NAME -->
		<component name="updated"  class ="MatchDatabaseRecord"/>
		<component name="original"  class ="MatchDatabaseRecord">
			<property name="geneid" type="long"/>
			<property name="gi" type="long"/>
			<property name="accession" type="string" length="20"/>
			<property name="version" type="string" length="20"/>
			<property name="p_gi" type="long"/>
			<property name="p_accession" type="string" length="20"/>
			<property name="p_version" type="string" length="20"/>
			<property name="start" type="long"/>
			<property name="end" type="long"/>
		</component>
		<property name="match_status" type="string" length="30"/>
		<property name="reason" type="string" length="225"/>
		<property name="team" type="string" length="20"/>
		<property name="update_date" type="java.sql.Date"/>
		<property name="impact" type="string" length="8"/>
	</ class >

<!--=================================================================================-->


	<sql-query name="MatchRecordsLoader">
    < return  alias="rec"  class ="MatchRecord"/>
    	select 
    		rownum as {rec.num}, 
    		mr.CLEAN_NAME as {rec.name}, 
    		c.CONTENT_NAME as {rec.type},
    		mr.CLEAN_SKU as {rec.sku},
    		pp.PROGRAM_ID as {rec.prognum},
    		matchc.CONTENT_NAME as {rec.match_type},
    		mr.UPDATED_GENE_ID as {rec.updated.geneid},
    		mr.ORIGINAL_GENE_ID as {rec.original.geneid}
    	from MATCH_RECORDS mr
    	inner join CONTENT c on mr.CONTENT_ID = c.CONTENT_ID
    	inner join PRODUCT p on mr.PROD_ID = p.PROD_ID 
    	left outer join PRODUCT_PROGRAM pp on p.PROD_ID = pp.PROD_ID
    	inner join CONTENT matchc on mr.MATCH_CONTENT_ID = matchc.CONTENT_ID
	</sql-query>

...
Рейтинг: 0 / 0
Hibernate: Nested Objects & Named Query
    #33223937
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это так, пока вариант плясок с бубном ...
...
Рейтинг: 0 / 0
Hibernate: Nested Objects & Named Query
    #33224051
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После кой-какого колдовства получил более-менее работающий коде ...
...
Рейтинг: 0 / 0
Hibernate: Nested Objects & Named Query
    #33224052
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
	< class  name="MatchRecord">
		<id name="id" type="long" >
			<generator  class ="assigned"/>
		</id>
		<property name="name" type="string" length="100"/>
		<property name="type" type="string" length="30"/> <!-- CONTENT_NAME -->
		<property name="sku" type="string" length="30"/>
		<property name="prognum" type="string" length="20"/>
		<property name="match_type" type="string" length="30"/> <!-- MATCHED CONTENT_NAME -->
		<component name="updated"  class ="MatchDatabaseRecord">
			<property name="geneid" type="long" insert="false" update="false"/>
			<property name="gi" type="long" insert="false" update="false"/>
			<property name="accession" type="string" length="20" insert="false" update="false"/>
			<property name="version" type="string" length="20" insert="false" update="false"/>
			<property name="p_gi" type="long" insert="false" update="false"/>
			<property name="p_accession" type="string" length="20" insert="false" update="false"/>
			<property name="p_version" type="string" length="20" insert="false" update="false"/>
			<property name="start" type="long" insert="false" update="false"/>
			<property name="end" type="long" insert="false" update="false"/>
		</component>
		<component name="original"  class ="MatchDatabaseRecord">
			<property name="geneid" type="long" insert="false" update="false"/>
			<property name="gi" type="long" insert="false" update="false"/>
			<property name="accession" type="string" length="20" insert="false" update="false"/>
			<property name="version" type="string" length="20" insert="false" update="false"/>
			<property name="p_gi" type="long" insert="false" update="false"/>
			<property name="p_accession" type="string" length="20" insert="false" update="false"/>
			<property name="p_version" type="string" length="20" insert="false" update="false"/>
			<property name="start" type="long" insert="false" update="false"/>
			<property name="end" type="long" insert="false" update="false"/>
		</component>
	</ class >

<!--=================================================================================-->

	<sql-query name="MatchRecordsLoader">
    < return  alias="rec"  class ="MatchRecord"/>
    	select 
    		mr.REPORT_ID as {rec.id},
    		mr.CLEAN_NAME as {rec.name}, 
    		c.CONTENT_NAME as {rec.type},
    		mr.CLEAN_SKU as {rec.sku},
    		pp.PROGRAM_ID as {rec.prognum},
    		matchc.CONTENT_NAME as {rec.match_type},
    		mr.UPDATED_GENE_ID as {rec.updated.geneid},
    		mr.UPDATED_GI as {rec.updated.gi},
    		mr.UPDATED_ACCESSION as {rec.updated.accession},
    		mr.UPDATED_VERSION as {rec.updated.version},
    		mr.UPDATED_P_GI as {rec.updated.p_gi},
    		mr.UPDATED_P_ACCESSION as {rec.updated.p_accession},
    		mr.UPDATED_P_VERSION as {rec.updated.p_version},
    		mr.UPDATED_START as {rec.updated.start},
    		mr.UPDATED_END as {rec.updated.end},
    		mr.ORIGINAL_GENE_ID as {rec.original.geneid},
    		mr.ORIGINAL_GI as {rec.original.gi},
    		mr.ORIGINAL_ACCESSION as {rec.original.accession},
    		mr.ORIGINAL_VERSION as {rec.original.version},
    		mr.ORIGINAL_P_GI as {rec.original.p_gi},
    		mr.ORIGINAL_P_ACCESSION as {rec.original.p_accession},
    		mr.ORIGINAL_P_VERSION as {rec.original.p_version},
    		mr.ORIGINAL_START as {rec.original.start},
    		mr.ORIGINAL_END as {rec.original.end}
    	from MATCH_REPORTS mr
    	inner join CONTENT c on mr.CONTENT_ID = c.CONTENT_ID
    	inner join PRODUCT p on mr.PROD_ID = p.PROD_ID 
    	left outer join PRODUCT_PROGRAM pp on p.PROD_ID = pp.PROD_ID
    	inner join CONTENT matchc on mr.MATCHED_CONTENT_ID = matchc.CONTENT_ID
	</sql-query>
...
Рейтинг: 0 / 0
Hibernate: Nested Objects & Named Query
    #33224182
gaper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создалось впечатление что всё это вы пишете своими руками. Медаль за это можно давать смело. Однако, без выборки первичного ключа (вариант А) вряд ли должно работать, поэтому бубнов тут не так уж и много. Могу только посоветовать использовать xdoclet для генерации дескриптора. Также создалось впечатление, что запрос писать совершенно необязательно, если сконцентрировать внимание на построении классов. Например, почему не сделать класс Content и изменить "String getType()" на "Content getType()". Тоже самое с match_type.

Итого: таблицы не трогаем, а строим классы на основе таблиц и связей. Тогда не придётся колдовать с запросами.
...
Рейтинг: 0 / 0
Hibernate: Nested Objects & Named Query
    #33225883
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 gaper.
Я думаю, просто есть разные подходы. Я иду от базы. Для меня чем меньше жабского коде, тем лучше. Может я и не прав. Например, класс Content мне не к чему. Мне тольки нужно имя его 2 раза получить и все.
Я согласен, что можно нагородить кучу классов и мой SQL-ный кирпич вообще спрятать. А вот нужно ли это? На мой взгляд, пока нет.
Ище небольшое пояснение - сей коде, не кусок большого проекта, где классы могут использоваться, а маленький проектик сам по себе - полезть в базу, вытащить список строчек, по ним построить мыло и разослать. И все.
А что касаемо rownum как первичного ключа - все работало. Но я подумал, раз уж есть RECORD_ID, так почему бы его и не использовать ...
...
Рейтинг: 0 / 0
Hibernate: Nested Objects & Named Query
    #33225903
gaper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так я предложил "идти от базы". Лишний класс (или десяток классов) Вам ничего не испортит. Если хотите выжать производительность, может быть лучше пойти через jdbc?
...
Рейтинг: 0 / 0
Hibernate: Nested Objects & Named Query
    #33229753
AciD_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я только не пойму зачем загружать систему Хибернэйтом, если для получения объектов используется обычный запрос! А как же маппинг полей классов на поля таблиц и другие преимущества Хибернэйт, ради которых его и используют!

В даном подходе кроме понижения производительности система больше ничего не получит.

Или я ошибаюсь?..
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: Nested Objects & Named Query
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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