é o seguinte, to criando o projeto biblioteca, onde um autor pode possuir varios livros e um livro pode possuir varios autores. Minhas classes ja estão todas anotadas direitinhos, com cascata e tudo mais, inclusive inserindo na tabela intermediaria do banco. O problema é quando eu ja possuo um autor cadastrado no banco e eu quero simplesmente linkar esse autor a um novo livro,
em vez de simplesmente associar o id do autor ao isbn no livros, está sendo criado um novo autor no banco.
public class TesteCadastrarLivro{
public static void main(String[] args) {
DAOGenerico dg = new DAOGenerico();
Autor a;// = new Autor();
List<Autor> lista = new ArrayList();
a=(Autor)dg.consultarPorChave(Autor.class, 5);
Livro l = new Livro();
l.setIsbn("12");
l.setTitulo("A cabana");
l.setEdicao(8);
l.setCopyright("2010");
lista.add(a);
l.setAutores(lista);
dg.cadastrar(l);
Abaixo segue o codigo das minhas classes.
@Entity
@Table(name = "livros")
public class Livro implements Serializable {
@Id
private String isbn;
@Column
private String titulo;
@Column
private int edicao;
@Column
private String copyright;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "autoresisbn", joinColumns = {
@JoinColumn(name = "isbn") },
inverseJoinColumns = { @JoinColumn(name = "idautor") })
List<Autor> autores = new ArrayList();
@Entity
@Table(name = "autores")
public class Autor implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idautor;
@Column
private String nome;
@Column
private String sobrenome;
@ManyToMany(mappedBy="autores",cascade = CascadeType.ALL)
List<Livro> livros = new ArrayList();
Seu alguem puder ajudar, ficarei muito agradecido.