quarta-feira, 20 de abril de 2011

Mapeamento one-to-many Hibernate.

Boa Tarde


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.


  1. public class Parent {
  2.     private int id;
  3.     private String  nome;
  4.     private Set<Childrem> children;  
  5.     public int getId() {
  6.         return id;
  7.     }
  8.     public void setId(int id) {
  9.         this.id = id;
  10.     }
  11.     public String getNome() {
  12.         return nome;
  13.     }
  14.     public void setNome(String nome) {
  15.         this.nome = nome;
  16.     }
  17.     public Set<Childrem> getChildren() {
  18.         return children;
  19.     }
  20.     public void setChildren(Set<Childrem> children) {
  21.         this.children = children;
  22.     }

  1. public class Childrem {
  2.     private Parent parent_id;
  3.     private int id;
  4.     private String nomeChildrem;
  5.     public Childrem() {
  6.     }        
  7.     public Parent getParent_id() {
  8.         return parent_id;
  9.     }
  10.     public void setParent_id(Parent parent_id) {
  11.         this.parent_id = parent_id;
  12.     }
  13.     public String getNomeChildrem() {
  14.         return nomeChildrem;
  15.     }
  16.     public void setNomeChildrem(String nomeChildrem) {
  17.         this.nomeChildrem = nomeChildrem;
  18.     }
  19.     public int getId() {
  20.         return id;
  21.     }
  22.     public void setId(int id) {
  23.         this.id = id;
  24.     }
  25. }

Acredito que qualquer um saiba que ai estao as duas classes agora o mapeamento.


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  3. <hibernate-mapping>
  4.   <class name="Classes.Parent" >
  5.     <id name="id" >
  6.         <generator class="native" />
  7.     </id>
  8.     <property name="nome"/>
  9.     <set name="children" inverse="true"  cascade="all-delete-orphan">
  10.         <key column="parent_id" not-null="true"/>
  11.         <one-to-many class="Classes.Childrem" />
  12.     </set>
  13.   </class>
  14.   <class name="Classes.Childrem"><!--Classe Childrem-->
  15.       <id name="id" >
  16.           <generator class="native"  /><!--Autoincrement-->
  17.       </id>
  18.      <property name="nomeChildrem" />
  19.      <many-to-one  name="parent_id" column="parent_id" notnull="true" /><!--RELACIONAMENTO EM CHIDREM-->
  20.   </class>
  21. </hibernate-mapping>


Mas a Sacada nao esta ai, e sim em como vai declarar o Set, veja abaixo a classe.


  1. Parent p = new Parent();
  2. Childrem c = new Childrem();
  3. Childrem b = new Childrem();
  4. p.setChildren(new HashSet<Childrem>());//Aqui esta new HashSet, depois so add.
  5. p.getChildren().add(b);
  6. p.getChildren().add(c);
  7. session.save(p);
  8. session.flush();
   

quinta-feira, 14 de abril de 2011

iReport 4.0.1 - Quais os jars necerrarios ?

Boa Tarde.


Bem bem, nem todos sabem quais são os jars necessarios para o funcionamento de um relatorio feito no iReport dentro de uma aplicação, bem como eu nao uso graficos, apenas o sulficiente como crosstable, subreports e mais alguma coisinha vo postar abaixo o nome e o link de Cada uma dos Jars necessarios. (Eu sempre esqueço quais sao auhaahua).


jasperreports-4.0.1,jar
commons-logging-1.1.jar
commons-digester-1.7.jar
iText-2.1.7.jar
poi-3.6.jar