Мой основной сценарий - это двунаправленное отношение «многие ко многим», которое сопоставляется с JPA. Достаточно просто. Однако мне нужно добавить «тип» в отображение, и я борюсь с лучшей реализацией. Вот схема:
Network
Set<Member> defaultMembers; //members that meet the network definition
Set<Member> suppressedMembers; //members that meet the network definition, but are hidden.
Set<Member> addedMembers; //memders that don't meet the network definition, but have been added in anyway.
Member
Set<Network> attachedNetworks;
Если мне не нужно, чтобы это было двунаправленным (например, мне нужно было только получать доступ к участникам из сетей и не нужно было иметь возможность путешествовать в другую сторону), наиболее очевидным решением для меня является одно таблица ссылок для каждого набора членов (network_member, suppressed_member, added_member
), но она разваливается в другую сторону. Я полагаю, что я мог бы использовать одну таблицу ссылок и превратить ее в объект со столбцом дискриминатора, но каждый раз, когда я видел, как кто-то использует таблицу ссылок в качестве объекта, код, кажется, превращается в катастрофу.
Я нашел много похожих вопросов, но вопросы были либо слишком конкретными, либо ответы не совсем охватили решение, которое я ищу. Любые предложения о том, как лучше всего справиться с этой ситуацией?