Sei que não é possível sem uma boa POG. A forma culta de se fazer é criando uma fk e linkando as tabelas, mas n entendo ainda como poderia implementar isso. Eu gostaria de fazer uma lista de Livros, uma de Alunos e dentro da tabela alunos um campo que contem os livros que esse aluno leu de forma que o JPA reconheça como do tipo List
Bom dia.
Cara… primeira vez que vi essa expressão >>> POG ( A Programação Orientada a Gambiarras) kkkkk… Mas vamos lá! Quando consultei aki pra turma, me ajudaram dessa forma:
Vc não falou se o relacionamento é 1 x N ou N x N, então vou te falar como fiz com meu projeto trabalhando com o Banco de Dados SQLite, (só uma sugestão do raciocínio lógico pra vc):
Se o relacionamento entre as tabelas de aluno e livro for N x N vc tem que criar uma TABELA RELACIONAL para poder relacionar o aluno a livro e/ou vice-versa, onde vc tem um aluno que pode ter lido 1 ou N livros e um livro que pode ser lido por 1 ou N alunos. É assim que vc faz. Vc cria um método em que vc passa o id do aluno e, DENTRO DO MÉTODO, vc faz um for que varre sua lista de livros e DENTRO DESSE for vc fixa o id do aluno e vai inserido os ids de cada livro NA TABELA RELACIONAL. Seria mais ou menos assim:
public void inserirLivrosDoAluno(int idAluno){
for(int i = 0; i < listaDeLivros.size(); i++){
livro = listaDeLivros.get(i);
inserirTabelaRelacionalBancoDeDados(idAluno, livro.getId());
}
}
Sua TABELA RELACIONAL vai estar preenchida assim (Admita que vc tem 2 alunos e 5 livros):
Quando vc fizer uma consulta pelos livros em que o aluno de id = 01 leu, os ids do livro vai de 01 a 05 e para o aluno de id = 02 ele vai ter lido o 02 e o 04. Em banco de dados essa é a forma pela qual vc obtém uma lista, vc só guarda os IDs deles nela.
Mas se o relacionamento é 1 x N, fica mais fácil ainda. Vc coloca a FK na classe que recebe o N, por ex.:
Se 1 aluno lê vários livros e o livro só pode ser lido por 1 aluno, esse relacionamento é de 1 x N onde o N vai pra tabela de livros, é ela que recebe a chave estrangeira, e nesse caso vc coloca o campo ID_ALUNO na tabela do LIVRO, digo ID, mas pode ser qq atributo, vc quem sabe, o ideal é o ID msm. Pra vc saber quantos livros um aluno leu, vai a criatividade, vc pode por exemplo criar um método onde vc lista todos os livros e filtra só os que o aluno pro exemplo do ID = 1 leu. Daí vc nesse método faz um contador e tem quantos livros foram lidos por esse aluno e assim vai.
Vi bons vídeos falando sobre isso de forma mt simples, esse é um dos:
Espero ter ajudado.
Ah, obrigado, no JSP tem uma tag que faz esse trabalho(@ManyToMany), mas ele não ta conseguindo criar a tabela relacional por algum motivo, ai quando eu vou criar um Aluno é disparada uma Nullpointer exceptions.