Представление отдельного элемента таблицы соединения в спящем объекте по дате версии - PullRequest
2 голосов
/ 15 декабря 2011

У меня есть Hibernate Entity, представляющая наши Partner s. Мы хотим связать этого партнера с активным 'Type' (другим объектом) через таблицу соединений (поскольку Type может использоваться во многих сценариях). Предостережение заключается в том, что объединение основано на дате (управление версиями).

То, что я хочу, это что-то вроде:

Partner.getActiveType() 

представляет

select * from partner_to_type_map 
where partner_id = xxx 
and now() between effective_from and effective_to;

Конечно, я мог бы представить таблицу соединений как сущность, и у них есть эта сущность, на которую можно ссылаться в моем Set<PartToTypeMap>, но это сделало бы ее использование ужасно неуклюжим Я должен был бы собрать эти данные и отсортировать их, чтобы найти правильный. Я могу сделать это с помощью дао и некоторого HQL, но я бы хотел, чтобы правильный объект просто БЫЛ там.

таблица соединений:

Я посмотрел на аннотацию @Version, но, похоже, это не то, что я хочу (хотя могу ошибаться).

Я могу опубликовать код, если это необходимо, но на самом деле, Partner - это простая сущность.

CREATE TABLE `partner_to_type_reg_map` (
  `partner_id` int(11) unsigned NOT NULL,
  `account_key_type_id` INT(10) UNSIGNED NOT NULL,
  `effective_from` Timestamp NOT NULL,
  `effective_to` TIMESTAMP NULL,
  PRIMARY KEY (`partner_id`),
  UNIQUE KEY `account_key_type_id` (`account_key_type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1 Ответ

0 голосов
/ 15 декабря 2011

Посмотрите на связь @Where & @WhereJoinTable - это позволит вам добавить условие в сопоставление ассоциации. Подробнее в документах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...