Eu tenho 3 entidades. Produto, NotaFiscal e ProdutoNotaFiscal (relacionamento entre ambas). Todas tem várias atributos, mas podei-as para melhor visualização. A minha idéia era não deixar nunca Produtos e NotasFiscais “soltas”, sem que estivessem associadas a pelo menos um ProdutosNotaFiscal. E não, eu não preciso de um relacionamento bidirecional desta maneira.
Para tanto pensei que o delete-orphan funcionaria conforme desejado (apagando as notasFiscais e produtos soltos). Mas ele tem se comportado da mesma maneira que o delete, isto é, assim que eu deleto o produtoNotaFiscal, ele tenta apagar também o produto e a notaFiscal. Mas obviamente aparece um erro gigante afirmando que estes estão ligados a algum produtoNotaFiscal.
Parece que eu estou com algum erro conceitual grande, e não consegui entender qual. Alguma dica?
@Entity
public class Produto {
@Id
private Integer codigo;
blablabla
}
@Entity
public class NotaFiscal {
@Id
private Integer numeroNotaFiscal;
blablabla
}
@Entity
public class ProdutosNotaFiscal {
@Id
@GeneratedValue(strategy=SEQUENCE, generator = "SEQ_PROD_NOTAS")
@SequenceGenerator(name = "SEQ_PROD_NOTAS", sequenceName = "SEQ_PROD_NOTAS")
private Integer id;
@ManyToOne
@Cascade(CascadeType.DELETE_ORPHAN)
private Produto produto;
@ManyToOne
@Cascade(CascadeType.DELETE_ORPHAN)
private NotaFiscal notaFiscal;
blablablablablabla (aqui tem muitos blasblasblas)
}
Neste link, tem isto aqui:
Mas não entendi exatamente o que isto quer dizer…