Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 14.06.07 20:11
Оценка:
Ребята, у меня следующая задача, мне нужно из трёх атрибутов сделать один, который и будет ID?

То есть как-то подписать эти три три атрибута, что бы при создании нового объекта, я мог получить такой же ID и сравнивать объекты только по id, а не по трём атрибутам.
У кого какие идеи?

База MySQL
Re: Hibernate, Id из нескольких колонок, в одной колонке?
От: Аноним  
Дата: 14.06.07 20:29
Оценка:
Здравствуйте, unkis, Вы писали:

U>Ребята, у меня следующая задача, мне нужно из трёх атрибутов сделать один, который и будет ID?


U>То есть как-то подписать эти три три атрибута, что бы при создании нового объекта, я мог получить такой же ID и сравнивать объекты только по id, а не по трём атрибутам.

U>У кого какие идеи?

U>База MySQL


читал, что составной id тема плохая, и сам такого не использую.
Re[2]: Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 14.06.07 20:37
Оценка:
А>читал, что составной id тема плохая, и сам такого не использую.

Я как раз и не хочу делать составной ID, я хочу что бы мой id содержал в себе информацию о моих трёх атрибутов.
тоесть как бы кололнка под ID одна, но значения Id состоит из трёх атрибутов.
Re[3]: Hibernate, Id из нескольких колонок, в одной колонке?
От: Аноним  
Дата: 14.06.07 21:10
Оценка:
Здравствуйте, unkis, Вы писали:


А>>читал, что составной id тема плохая, и сам такого не использую.


U>Я как раз и не хочу делать составной ID, я хочу что бы мой id содержал в себе информацию о моих трёх атрибутов.

U>тоесть как бы кололнка под ID одна, но значения Id состоит из трёх атрибутов.

Нет проблем.

1. Можно сделать тип у ID String и храни что хочешь.
2. Надо вместо generated сделать тип поля assigned

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}

->


@Id
public String getId() {
return id;
}
Re[4]: Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 15.06.07 07:16
Оценка:
А>Нет проблем.

А>1. Можно сделать тип у ID String и храни что хочешь.

А>2. Надо вместо generated сделать тип поля assigned

А> @Id

А> @GeneratedValue(strategy = GenerationType.AUTO)
А> public Long getId() {
А> return id;
А> }

->>


А> @Id

А> public String getId() {
А> return id;
А> }

и по какому принципу тогда будет генерироваться мой ID?
Re: Hibernate, Id из нескольких колонок, в одной колонке?
От: stenkil  
Дата: 15.06.07 07:25
Оценка:
Здравствуйте, unkis, Вы писали:

U>Ребята, у меня следующая задача, мне нужно из трёх атрибутов сделать один, который и будет ID?


U>То есть как-то подписать эти три три атрибута, что бы при создании нового объекта, я мог получить такой же ID и сравнивать объекты только по id, а не по трём атрибутам.

U>У кого какие идеи?

А чем тебе не подходит @IdClass ?
Re[2]: Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 15.06.07 07:36
Оценка:
S>А чем тебе не подходит @IdClass ?

так @IdClass, скажет что три моих атрибута(три колонки являются моим ID), а мне надо чтобы отображалось всё в одной колонке, а не в трёхю

Или я не прав?
Re[3]: Hibernate, Id из нескольких колонок, в одной колонке?
От: stenkil  
Дата: 15.06.07 07:47
Оценка:
Здравствуйте, unkis, Вы писали:


U>так @IdClass, скажет что три моих атрибута(три колонки являются моим ID), а мне надо чтобы отображалось всё в одной колонке, а не в трёхю


Да, три колонки в табле, но один составной Id для тебя. Чем это противоречит тому что ты писал
U>То есть как-то подписать эти три три атрибута, что бы при создании нового объекта, я мог получить такой же ID и сравнивать объекты
U>только по id, а не по трём атрибутам.
Re[4]: Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 15.06.07 08:04
Оценка:
S>Да, три колонки в табле, но один составной Id для тебя. Чем это противоречит тому что ты писал

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

К примеру у меня есть таблица с атрибутами A,B,C, так вот при создании новой записи надо сночало проверить существует ли такая запись в БД, тоесть проверить на соответствие каждого атрибута. Вот и получается проверка происходит по всем трём атрибутам.

Сейчас я делаю так, я в колонку ID этой таблицы, заношу суммарное значений трёх атрибутов, а именно id = A+"/"+B+"/"+C;
и в таком случаи, когда я создаю запись, я проверяю только по ID, тоесть только по одному атрибуту.
Re[5]: Hibernate, Id из нескольких колонок, в одной колонке?
От: stenkil  
Дата: 15.06.07 08:18
Оценка:
Здравствуйте, unkis, Вы писали:

U>К примеру у меня есть таблица с атрибутами A,B,C, так вот при создании новой записи надо сночало проверить существует ли такая запись в БД, тоесть проверить на соответствие каждого атрибута. Вот и получается проверка происходит по всем трём атрибутам.


Если я тебя правильно понял, тебе нужно уникальность записи по A, B, C, так и объяви их сочетание уникальными и лови exception с базы.
@UniqueConstraint(columnNames={A,B,C})
Re[6]: Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 15.06.07 08:37
Оценка:
S>Если я тебя правильно понял, тебе нужно уникальность записи по A, B, C, так и объяви их сочетание уникальными и лови exception с базы.
S>@UniqueConstraint(columnNames={A,B,C})
В принципе такой вариант тоже годится.

А как при помощи Hibernate, отлавливать это Excaption?
И потом, если несколько операций происходят в одной транзакции, то при отлови Exception всёравно будет происходит RollBack, или этого можно избежать?
Re[7]: Hibernate, Id из нескольких колонок, в одной колонке?
От: stenkil  
Дата: 15.06.07 08:48
Оценка:
Здравствуйте, unkis, Вы писали:

S>>Если я тебя правильно понял, тебе нужно уникальность записи по A, B, C, так и объяви их сочетание уникальными и лови exception с базы.

S>>@UniqueConstraint(columnNames={A,B,C})
U>В принципе такой вариант тоже годится.

U>А как при помощи Hibernate, отлавливать это Excaption?

в DAO
U>И потом, если несколько операций происходят в одной транзакции, то при отлови Exception всёравно будет происходит RollBack, или этого можно избежать?

Как в DAO напишешь, так и будет
Re[8]: Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 15.06.07 08:51
Оценка:
U>>А как при помощи Hibernate, отлавливать это Excaption?
S>в DAO
U>>И потом, если несколько операций происходят в одной транзакции, то при отлови Exception всёравно будет происходит RollBack, или этого можно избежать?

S>Как в DAO напишешь, так и будет


извините, я только начинаю разбираться с Hibernate,
что такое DAO?
Как отловить Exception?
и как избежать RollBack?

можно примерчик.
Re[9]: Hibernate, Id из нескольких колонок, в одной колонке?
От: stenkil  
Дата: 15.06.07 09:02
Оценка:
Здравствуйте, unkis, Вы писали:

U>можно примерчик.


google: DAO+Hibernate
Например http://www.ibm.com/developerworks/ru/library/j-genericdao/
Re[5]: Hibernate, Id из нескольких колонок, в одной колонке?
От: . Великобритания  
Дата: 15.06.07 09:18
Оценка:
unkis wrote:

> Сейчас я делаю так, я в колонку ID этой таблицы, заношу суммарное

> значений трёх атрибутов, а именно id = A+"/"+B+"/"+C;
> и в таком случаи, когда я создаю запись, я проверяю только по ID, тоесть
> только по одному атрибуту.
Сделай первичный ключ по трём колонкам. В чём проблема-то?
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 15.06.07 09:20
Оценка:
.>Сделай первичный ключ по трём колонкам. В чём проблема-то?
я уже писал, проблема в том что проверка по одному атрибуту, гораздо быстрее чем по трём, а мне очень важна скорость.
Re[7]: Hibernate, Id из нескольких колонок, в одной колонке?
От: stenkil  
Дата: 15.06.07 09:37
Оценка:
Здравствуйте, unkis, Вы писали:

.>>Сделай первичный ключ по трём колонкам. В чём проблема-то?

U>я уже писал, проблема в том что проверка по одному атрибуту, гораздо быстрее чем по трём, а мне очень важна скорость.

Используй тогда JDBC
Re[7]: Hibernate, Id из нескольких колонок, в одной колонке?
От: . Великобритания  
Дата: 15.06.07 10:06
Оценка:
unkis wrote:

> .>Сделай первичный ключ по трём колонкам. В чём проблема-то?

> я уже писал, проблема в том что проверка по одному атрибуту, гораздо
> быстрее чем по трём, а мне очень важна скорость.
Кто сказал? Ты пробовал? Выборка в индексе по составному ключу работает так же, как и по обычному.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[5]: Hibernate, Id из нескольких колонок, в одной колонке?
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 15.06.07 12:26
Оценка:
Здравствуйте, unkis, Вы писали:

S>>Да, три колонки в табле, но один составной Id для тебя. Чем это противоречит тому что ты писал


U>Проблема в том хоть три эти колонки и будут ключами, проверка будет проводится по трём атрибутам, а мне надо чтобы проверка проводилась по одному.


U>К примеру у меня есть таблица с атрибутами A,B,C, так вот при создании новой записи надо сночало проверить существует ли такая запись в БД, тоесть проверить на соответствие каждого атрибута. Вот и получается проверка происходит по всем трём атрибутам.


U>Сейчас я делаю так, я в колонку ID этой таблицы, заношу суммарное значений трёх атрибутов, а именно id = A+"/"+B+"/"+C;

U>и в таком случаи, когда я создаю запись, я проверяю только по ID, тоесть только по одному атрибуту.

не правильным путем идете, товарисч, когда вокруг советуют использовать чисто синтетические ключи с хибером!
Blog
Re[6]: Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 15.06.07 12:37
Оценка:
L>не правильным путем идете, товарисч, когда вокруг советуют использовать чисто синтетические ключи с хибером!

Ребята, вы бы не мгли мне рассказать что такое эти синтетические ключи? как они мне помогут? как их в Hibernate использовать?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.