[Hibernate] Fk sempre nulo

0 respostas
J

Olá a todos!

Estava lendo o fórum do Hibernate, por acaso encontrei uma pessoa que está passando pelo mesmo problema. A Fk, quando gravado o registro no banco, está sempre vindo null. Na tabela Personen o demônio da FK FIRMA_FK vem sempre nulo.

Será que alguém tem noção do que se trata?

@Entity
@Table (name="firmen")
public class Firma implements Serializable {
  private static final long serialVersionUID = -6665434043077843943L;
 
  private int firmaId;
  private String name;
  private List<Person> personen = new ArrayList<Person>();  
  
  @Id @GeneratedValue(strategy = GenerationType.AUTO)
  @Column (name="FIRMA_ID")
  public int getFirmaId() {
    return firmaId;
  }
  public void setFirmaId(int firmaId) {
    this.firmaId = firmaId;
  }
 
  @Column (name="NAME", length=30)
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
   
  @OneToMany (targetEntity=Person.class, mappedBy="firma", cascade=CascadeType.ALL)
  public List<Person> getPersonen() {
    return personen;
  }
  public void setPersonen(List<Person> personen) {	  
    this.personen = personen;
  }
}
@Entity
@Table (name="personen")
public class Person implements Serializable{
  private static final long serialVersionUID = 2135362023133590877L;
  private int personId;
  private String name;
  private Firma firma;
 
  public static long getSerialVersionUID() {
    return serialVersionUID;
  }
 
  @Id @GeneratedValue(strategy = GenerationType.AUTO)   
  public int getPersonId() {
    return personId;
  }
  public void setPersonId(int personId) {
    this.personId = personId;
  }
 
  @Column (name="NAME", length=20)
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }

  @ManyToOne (cascade=CascadeType.ALL)
  @JoinColumn (name="FIRMA_FK", referencedColumnName = "FIRMA_ID", insertable=false, updatable=false)
  public Firma getFirma() {
    return firma;
  }

  public void setFirma(Firma firma) {
    this.firma = firma;
  }
}
public class HibernateUtil {

	private static final SessionFactory sessionFactory;

    static {
        try {            
            AnnotationConfiguration cfg = new AnnotationConfiguration();
    		cfg.addAnnotatedClass(Firma.class);
    		cfg.addAnnotatedClass(Person.class);
    		sessionFactory = cfg.buildSessionFactory();
        } catch (Throwable ex) {            
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static Session getSession()
            throws HibernateException {
        return sessionFactory.openSession();
    }
	
}
public class CriarTabelas {
	
	public static void criar(AnnotationConfiguration cfg){
		new SchemaExport(cfg).create(false,true);
	}
	
	public static void main(String args[]) {		
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Firma.class);
		cfg.addAnnotatedClass(Person.class);
		criar(cfg);
	}
}
public class Insert {
	
	public static void main(String[] args) {
		
		Session session = HibernateUtil.getSession();
	    	   
	    Firma firma = new Firma();
	    firma.setName("Empresa X");
	   
	    List<Person> personen = new ArrayList<Person>();
	   
	    Person p1 = new Person();
	    p1.setFirma(firma);
	    p1.setName("CCalazans");
	    personen.add(p1);	    

	    Person p2 = new Person();
	    p2.setFirma(firma);
	    p2.setName("ACalazans");	    
	    personen.add(p2);
	   
	    firma.setPersonen(personen);
	    session.save(firma);
	    session.flush();	       
	    session.close(); 
	}
}

Valeu!

Criado 4 de julho de 2006
Respostas 0
Participantes 1