Pois, bem vou dividir como resolver um pequeno problema que tive que levou algumas semanas auhaua, bem apos ler em varios foruns, resolvi ir ler a documentação e fazer o tutorial disponivel na documentação, bem nao obtive muito sucesso, eu nao conseguiua salvar as coleções, sempre aparecia uma execessao , do tipo NullPointerException a qual na minha opniao e um saco, se alguem tentar traduzir saberá que se refere a algo que nao foi instanciado, nao foi criado nao tem referencia, ate que eu me recordei de uma pequena coisinha a se fazer quando se quer add dados a coleção diretamente a classe, abaixo o codigo.
- public class Parent {
- private int id;
- private Set<Childrem> children;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- return nome;
- }
- this.nome = nome;
- }
- public Set<Childrem> getChildren() {
- return children;
- }
- public void setChildren(Set<Childrem> children) {
- this.children = children;
- }
- public class Childrem {
- private Parent parent_id;
- private int id;
- public Childrem() {
- }
- public Parent getParent_id() {
- return parent_id;
- }
- public void setParent_id(Parent parent_id) {
- this.parent_id = parent_id;
- }
- return nomeChildrem;
- }
- this.nomeChildrem = nomeChildrem;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- }
Acredito que qualquer um saiba que ai estao as duas classes agora o mapeamento.
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="Classes.Parent" >
- <id name="id" >
- <generator class="native" />
- </id>
- <property name="nome"/>
- <set name="children" inverse="true" cascade="all-delete-orphan">
- <key column="parent_id" not-null="true"/>
- <one-to-many class="Classes.Childrem" />
- </set>
- </class>
- <class name="Classes.Childrem"><!--Classe Childrem-->
- <id name="id" >
- <generator class="native" /><!--Autoincrement-->
- </id>
- <property name="nomeChildrem" />
- <many-to-one name="parent_id" column="parent_id" notnull="true" /><!--RELACIONAMENTO EM CHIDREM-->
- </class>
- </hibernate-mapping>
Mas a Sacada nao esta ai, e sim em como vai declarar o Set, veja abaixo a classe.
- Parent p = new Parent();
- Childrem c = new Childrem();
- Childrem b = new Childrem();
- p.getChildren().add(b);
- p.getChildren().add(c);
- session.save(p);
- session.flush();