Hibernate: mapeando muitos para muitos para mapear

Estou desenvolvendo um aplicativo que lida com duas entidades a seguir:Produtos (vamos chamá-lo de X, Y, Z) eMateriais (a, b, c, ...). Sabe-se que todo produto possui uma receita que indica quais materiais são necessários para a fabricação desse produto. Por exemplo, para produzir um X, precisamos de 2 a, 6 ce 4 d (X = 2a + 6c + 4d).

É assim que se reflete nas tabelas de um banco de dados:

Products
id INT
name VARCHAR
...

Materials
id INT
name VARCHAR
...

Recipes
product_id INT
material_id INT
count INT

O campo "contagem" na terceira tabela é um coeficiente para materiais do mesmo tipo (2, 6, 4 do exemplo).

Então, eu quero compor a classe do produto desta maneira:

public class Product {
    ...
    private Map<Material, Integer> recipe; // How many units of each material we need?
    ...
}

É uma maneira de buscar todos os dados necessários para o mapa de receitas usando o Hibernate? A abordagem de configuração separada (sem anotações) é preferida.

questionAnswers(1)

yourAnswerToTheQuestion