Hibernate Annotation uso da Foreing Key

2 respostas
F

Boa tarde aee… :slight_smile:

Estou fazendo uma aplicação desktop e estou usando hibernate annotations para criar as tabelas. Não consigo fazer foreing keys…

Outra duvida.

tenho duas classes tipo:
Aluno e Horario.

A classe Aluno tem um campo “idHorario” alguem sabe me dizer como tenho q fazer na inserção de dados?
se a primary key da classe horario tbm vai ter o @GeneratedValue (strategy = GenerationType.IDENTITY)
??

alguem pode me ajudar??

2 Respostas

J

faum, não entendi, vc quer usar a sua classe terá duas chaves, tipo?

class Aluno {

private int id1;
private int id2;

}

T

Vou simular duas tabelas, Aluno e Horario. Cada tabela deve possuir um arquivo exclusivo para o mapeamento. Eles ficariam +/- assim:

//Aluno.java
package br.com.dominio;

import java.util.Collection;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="aluno")
public class Aluno {

      private int id;
      private Collection<Horario> horarios;

      @Id
      @GeneratedValue(strategy = GenerationType.SEQUENCE)
      @Column(name="id_aluno")
      public int getId() {
            return this.id;
      }

      @OneToMany(mappedBy="aluno", fetch = FetchType.LAZY)
      @Cascade(CascadeType.ALL)
      public Horario getHorario() {
            return this.horario;
      }

      //Métodos setters
      //...
}

//Horario.java
package br.com.dominio;

import java.util.Collection;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="horario")
public class Horario {
      private int id;
      private Aluno aluno;

      @Id
      @GeneratedValue(strategy = GenerationType.SEQUENCE)
      @Column(name="id_horario")
      public int getId() {
            return this.id;
      }

      @ManyToOne(fetch = FetchType.EAGER)
      @JoinColumn(name="id_aluno",
                  insertable=true, updatable=true)
      @Fetch(FetchMode.JOIN)
      @Cascade(CascadeType.SAVE_UPDATE)
      public Aluno getAluno() {
            return this.aluno;
      }

      //Métodos setters
      //...
}

Acho que é isso :wink:

Criado 9 de janeiro de 2008
Ultima resposta 10 de jan. de 2008
Respostas 2
Participantes 3