Tenho uma tabela (Tag) com auto-relacionamento que aponta para um registro pai (TagId PK, ParentTagId FK)
Tenho a classe abaixo mapeada por annotations e funcionando corretamente (consigo retornar as Tags e o seu ‘parent’)
[code] @Entity @Table(name=“SearchTag”)
public class SearchTag { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name=“TagId”)
public long getTagId() {
return tagId;
}
public void setTagId(long tagId) {
this.tagId = tagId;
}
private long tagId;
Meu problema é o seguinte: qual a melhor forma para eu implementar metodo que retorne uma Collection com as tags filhas de uma determinada tag? Com sql seria simplesmente um select * from tag where parenttagid = ?, mas estou pensando em como fazer isso mapeando com annotations…seria possivel?
Está funcionando como eu gostaria inicialmente, porém o que estou tentando agora é fazer com que essa collection fique com o comportamento “Lazy” (carregada apenas quando eu chamar o getter dessa collection)
Com o código acima, não estou conseguindo…sempre que carrego uma SearchTag pelo Id, essa collection é carregada automaticamente =/
A resposta para a segunda pergunta é: sim. A idéia é que qualquer tag possa ser filha de outra tag, logo uma tag que possui filhos, pode ser filha de outra tag.
[quote=clunsde]Se a resposta é sim, então a relação seria @ManyToMany e não @OneToMany.
Abraços.[/quote]
Entendido, realmente faz sentido…eu já fiz relacionamentos ManyToMany, mas entre entidades diferentes: mapeando no owner e usando o atributo mappedBy na outra extremidade (neste caso o lazy load funciona corretamente)
Gostaria de saber como fazer o lazy load no meu caso, onde existe um auto relacionamento (eu devo esta mapeando algo errado).