Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate join / 13 сообщений из 13, страница 1 из 1
13.03.2012, 17:21:45
    #37703272
MrMuscul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
Добрый день

Допустим есть класс, мапинг стандартный

Код: java
1.
2.
3.
4.
5.
Class1 {
   int id;
   int group_id;
   String name;
}



С помощь sql можно сделать обычный запрос:
Код: sql
1.
select t1.name, t2.name from table as t1 inner join table t2 on t1.id=t2.groupd_id



Как подобный запрос сделать средствами хибера? Гугл облазил но ничего не нашел.

что то подобное:
Код: java
1.
session.createQuery("select t1.name, t2.name from Class1 as t1 inner join Class1 as t2..... ")
...
Рейтинг: 0 / 0
13.03.2012, 17:26:14
    #37703285
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
1) Не используйте подчеркивание в полях и свойствах.
2) Для ORM джоина нужно иметь ассоциацию - OneToMany, ManyToOne.
Покажите нормальные классы и маппинги.
JOIN можно и на HQL и на Criteria API сделать.
...
Рейтинг: 0 / 0
13.03.2012, 17:33:59
    #37703315
MrMuscul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
Ну на самом деле тут примитивный пример сейчас будет. Просто хочу понять пока как это сделать.

маппинг
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com....">
  	<class name="Goods" table="goods">
		<id column="id" name="id">
			<generator class="increment"/>
		</id>
        <property name="groupId" column="group_id"/>
        <property name="name" column="name"/>
    </class>
</hibernate-mapping>



Класс
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class Goods {
	
	private Long id = null;
	
        private Long groupId = null;

	private String name = null;
	
	set and get..
}



Дальше с помощью хибера хочу сделать запрос
Код: sql
1.
select t1.name, t2.name from table as t1 inner join table t2 on t1.id=t2.groupd_id
...
Рейтинг: 0 / 0
13.03.2012, 17:43:06
    #37703338
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
Ааа. Так таблица сама на себя джоинится? И вам нужны два разных имени? Объясните цель этого запроса. Просто если этого нет в маппинге и сущностях, то кроме как на SQL этого не сделать
session.createSQLQuery и вперед.
...
Рейтинг: 0 / 0
13.03.2012, 17:49:29
    #37703351
MrMuscul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
Blazkowicz,

Связь один ко многим или подобные и потом джоинить их хибером умею. Но вот как один и тот же объект сджоинить с собой не знаю.
А по задаче:
Таблица с товарами. у каждого товара есть код его и код его группы. По сути одним запросом нужно получить все группы и товары.
...
Рейтинг: 0 / 0
13.03.2012, 17:49:51
    #37703353
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
...
Рейтинг: 0 / 0
13.03.2012, 17:50:38
    #37703357
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
MrMusculТаблица с товарами. у каждого товара есть код его и код его группы. По сути одним запросом нужно получить все группы и товары.
Вопрос в том, почему группа сама по себе является товаром? (t1.id=t2.groupd_id)
...
Рейтинг: 0 / 0
13.03.2012, 17:55:14
    #37703371
MrMuscul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
BlazkowiczMrMusculТаблица с товарами. у каждого товара есть код его и код его группы. По сути одним запросом нужно получить все группы и товары.
Вопрос в том, почему группа сама по себе является товаром? (t1.id=t2.groupd_id)

Ну то что есть, то и поддерживаем) Судя по ссылке просто нужно создать связь один ко многим к той же таблице. Попробую :) Спасибо
...
Рейтинг: 0 / 0
13.03.2012, 17:57:14
    #37703377
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
MrMuscul,
разнесите группы и товары.
Группа - это справочник-классификатор с именем группы
...
Рейтинг: 0 / 0
13.03.2012, 17:58:34
    #37703381
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
MrMusculодин ко многим к той же таблице
к таблице - Группа
...
Рейтинг: 0 / 0
13.03.2012, 18:44:14
    #37703475
MrMuscul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
Да вопрос то в другом, как так сделать?) Все эти данные по сути для примера.
...
Рейтинг: 0 / 0
13.03.2012, 21:14:54
    #37703688
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
MrMusculДа вопрос то в другом, как так сделать?) Все эти данные по сути для примера.
ОРМ не такой гибкий, как синтаксис SQL, чтобы решать абстрактные задачи.
...
Рейтинг: 0 / 0
14.03.2012, 09:32:05
    #37704139
MrMuscul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate join
Ну на самом деле получилось сделать достаточно легко. Обычный с set в классе как в случае со связью один ко многим.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate join / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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