JPA - Как мне сопоставить таблицу быстрого просмотра? - PullRequest
0 голосов
/ 08 марта 2012

У меня есть контактное лицо, у которого> 1 номер телефона contact[contact, name, cell,work,home...] и я хочу создать справочную таблицу phone_number[uid,contactuid,telephonenumber], чтобы я мог искать в этой таблице по номеру телефона, чтобы найти контакт.

С JPA - как мне настроить;

  • Сопоставьте сущность phone_number, чтобы она заполнялась из контактной сущности
  • удалить запись phone_number при удалении номера контакта (или при удалении контакта удалить все записи)
  • изменить phone_number запись при изменении номера контакта?

Я надеялся сделать все это в DAO, поскольку это не совсем логика домена ..

** Обновление - разумно ли определять отношение contact->phone_number в JPA или просто отобразить его с помощью SQL в DAO?

Большое спасибо заранее

1 Ответ

1 голос
/ 08 марта 2012

Если я правильно понимаю, у вас уже есть контактная сущность с несколькими полями телефонного номера:

  • CellPhone
  • workPhone
  • HomePhone

И вы хотели бы найти контакт по номеру телефона. Если это так, вам не нужна дополнительная таблица для этого:

select c from Contact c 
where c.cellPhone = :phoneNumber 
   or c.workPhone = :phoneNumber 
   or c.homePhone = :phoneNumber

Но, возможно, у вас должна быть сущность Phone с полями phoneNumber и type (работа, ячейка и т. Д.), А также двусторонняя связь OneToMany между контактом и телефоном. Ваш запрос будет тогда

select c from Phone p
inner join p.contact c
where p.phoneNumber = :phoneNumber

, что, безусловно, будет более эффективным.

...