我对一个问题有点困惑,想知道我是否遗漏了一些简单的东西。
我有三张桌子:
create table A (id serial primary key, name char(50));
create table B (id serial primary key, name char(50));
create table c (A int references A(id), B int references b(id));
并且我确保不重复使用 A & B 关系:
create index unique_a_b_in_c on c (A,B);
然后我使用hibernate将这些文件逆向工程为Java对象。
到目前为止一切都很好,但现在我想做的是确保 A 的每个实例都有 B 记录的唯一组合。(例如,如果我在 B - B1 和 B2 中有 2 条记录,那么我的 A 记录只能有四个可能的值,即:无记录、B1 记录、B2 记录或 B1 和 B2 记录。 )
到目前为止,我最好的尝试是在 A 中创建一个唯一的哈希码,该哈希码基于属于该记录的类型 B 记录,然后覆盖 equals 函数以检查 A 的 B 记录集合的内容。如果对象相等,我会更新A记录,但如果A记录是新的,我可以保存它。
显然,这对于 equals 来说是一个繁重的过程,并且随着 B 的大小变大,检查匹配项时的处理时间也越来越长。
我目前的想法是放弃任何提供这种唯一性的尝试,并允许重复,尽管它们在我的问题的上下文中没有意义,因为 A 实际上是由组成它的 B 记录的组合定义的。
有没有人对如何解决这个问题有任何想法?
非常感谢 !