我有textarea,我可以在其中输入要阻止的网站名称。所有输入的站点都存储在SITES表中。如果输入的任何站点都在SITES表中,我们应该忽略这些站点并插入剩余的站点。
我们应该如何使用hibernate?
答案 0 :(得分:0)
您可以(也可能应该)在Hibernate或数据库级别执行的操作是向包含站点名称的字段添加唯一约束。这将确保在添加重复项时引发异常。但是为了防止此异常,您必须检查应用程序代码中的预先存在的网站,例如:通过对要添加的每个站点使用查询,或者一次加载整个表,然后检查每个输入的站点名称。
请注意,您可能需要对网站名称进行某种规范化,例如修剪空格或转换为小写以确保您识别任何重复项(例如,www.EXAMPLE.com
和www.example.com
应该被认为是相等的)。在Hibernate Validator中,您可以使用模式约束来强制执行此规范化。
答案 1 :(得分:0)
执行第一个查询:
select site.name from Site site where site.name in (:enteredSiteNames)
然后从输入的网站列表中删除所有找到的网站(因为它们已经在数据库中)。
然后迭代剩余的网站,并坚持下去。