[Hibernate] delete-orphan no ManyToOne

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…