Dúvida básica ORM

Estou em dúvida entre possíveis implementações para um cenário simples com 3 tabelas.
Vou descrever as duas soluções que pensei, gostaria que me ajudassem a avaliá-las para que funcionem da melhor forma utilizando um framework ORM

Cenário:

Preciso cadastrar MENSAGENS em um sistema. Essas mensagens podem estar associadas a uma AREA DE ATENDIMENTO e/ou um ESCRITORIO.

Cada mensagem pode ter várias áreas de atendimento
Cada área de atendimento pode ter várias mensagens
Cada mensagem pode ter vários escritórios
Cada escritório pode ter várias mensagens


Solução 1:
No banco de dados:
Na tabela MENSAGEM referenciar as tabelas AREA_ATENDIMENTO e ESCRITORIO (na verdade utilizando tabelas associativas, devido ao relacionamento n para n.
Só resumi p/ facilitar o entendimento)

no java:
na classe Mensagem, ter um Set e um Set
na classe AreaAtendimento ter um Set
na classe Escritorio ter um Set


Solução 2:
No banco de dados:
ter as 3 tabelas (MENSAGEM, AREA_ATENDIMENTO e ESCRITORIO) e uma quarta tabela chamada
MENSAGEM_AREA_ATENDIMENTO_ESCRITORIO que referencia as 3 outras tabelas, relacionando-as através dela.

no java:
Eu não posso simplesmente criar Sets para fazer referencias entre as 3 classes, pois não existe associação
dessa forma no banco de dados. Eu poderia criar uma classe representando a tabela associativa MensagemAreaAtendimentoEscritorio e
dentro dessa classe criar 3 Sets das 3 outras classes?

A solução dois me parece ser mais correta em questão de banco de dados, mas fica mais complexa no java. O que acham?
Aceito novas alternativas. Obrigado!