Hibernate...criar Fks qdo gera por annotations...?

1 resposta
P

Folks,

duvida estou usando a versão 5 do MYSQL e gerei a tabela através
das classes com annotations …

Minha duvida não cria FK´s na tabela ???

se alguem puder me ajudar …

abs

---
<persistence-unit name="exemploJPA" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
    <class>br.com.exemplojpa.modelo.Usuario</class>
    <class>br.com.exemplojpa.modelo.Universidade</class>
    <class>br.com.exemplojpa.modelo.Centro</class>
    <properties>
      <property name="toplink.logging.level" value="INFO"/>
      <property name="toplink.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/exemplojpa"/>
      <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="toplink.jdbc.user" value="root"/>
      <property name="toplink.jdbc.password" value="root"/>
      <property name="toplink.ddl-generation" value="create-tables"/> 
    </properties>
  </persistence-unit>
---
mport javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity @Table
public class Centro {

	@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
	@Column(name="id_centro")
	private int id;
	private String nome;
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="id_universidade",
	insertable=true, updatable=true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
	private Universidade universidade;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Universidade getUniversidade() {
		return universidade;
	}
	public void setUniversidade(Universidade universidade) {
		this.universidade = universidade;
	}
	
	
}
---

@Entity @Table(name = "Universidade")
public class Universidade {
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    @Column(name="id_universidade")
	private int id;
	private String nome;
	
	
	@OneToMany(mappedBy="universidade",fetch=FetchType.LAZY)
	private Collection<Centro> centros;


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public String getNome() {
		return nome;
	}


	public void setNome(String nome) {
		this.nome = nome;
	}


	public Collection<Centro> getCentros() {
		return centros;
	}


	public void setCentros(Collection<Centro> centros) {
		this.centros = centros;
	}
	
	
	
	
	
}


---
---
CREATE TABLE `universidade` (
  `id_universidade` int(11) NOT NULL auto_increment,
  `NOME` varchar(255) default NULL,
  PRIMARY KEY  (`id_universidade`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


--

DROP TABLE IF EXISTS `centro`;
CREATE TABLE `centro` (
  `id_centro` int(11) NOT NULL auto_increment,
  `NOME` varchar(255) default NULL,
  `id_universidade` int(11) default NULL,
  PRIMARY KEY  (`id_centro`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

1 Resposta

P

mais uma duvida tem como mostrar o script da criação da tabela qdo for a primeira vez ???

Criado 26 de novembro de 2008
Ultima resposta 26 de nov. de 2008
Respostas 1
Participantes 1