我有一个联系人实体,其中包含> 1个电话号码contact[contact, name, cell,work,home...]
,并希望创建一个查找表phone_number[uid,contactuid,telephonenumber]
,以便我可以通过电话号码搜索此表以查找联系人。
使用JPA - 我将如何配置;
phone_number
实体,以便从联系实体phone_number
记录(或删除联系人,删除所有记录)phone_number
记录?我希望在DAO中完成所有这些,因为这不是真正的域逻辑。
**更新 - 在JPA中定义的contact->phone_number
关系是否合理,或者只是在DAO中使用SQL映射它?
非常感谢提前
答案 0 :(得分:1)
如果我理解正确,您已经拥有一个包含多个电话号码字段的联系人实体:
并且您希望找到一个给出电话号码的联系人。如果是这样,您不需要任何其他表来执行此操作:
select c from Contact c
where c.cellPhone = :phoneNumber
or c.workPhone = :phoneNumber
or c.homePhone = :phoneNumber
但也许您应该拥有一个带有phoneNumber
和type
(工作,单元格等)字段的Phone实体,并且在Contact和Phone之间具有双向OneToMany关联。您的查询将是
select c from Phone p
inner join p.contact c
where p.phoneNumber = :phoneNumber
肯定会更有效率。