Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/05/2011, 18:56
y0mism0
 
Fecha de Ingreso: diciembre-2007
Mensajes: 135
Antigüedad: 16 años, 4 meses
Puntos: 1
Hibernate no me crea las tablas

Buenas, no se que hacer para que Hibernate me cree las tablas automáticamente.
Quiero hacer esta relación: Estudiante (n) -> (1) Pais. Muchos estudiantes pueden pertenecer a un mismo país.
Pongo mi código para ver si veis algo mal:

Estudiante.class

Cita:

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.CascadeType;
import javax.persistence.ManyToOne;
import javax.persistence.GenerationType;

@Entity
@Table(name = "ESTUDIANTE")
public class Estudiante {

private long id_estudiante;
private Pais pais_estudiante;


@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column(name = "ID_Estudiante")
public long getIdEstudiante() {
return this.id_estudiante;
}

public void setIdEstudiante(long id_estudiante) {
this.id_estudiante = id_estudiante;
}


@ManyToOne(cascade = CascadeType.ALL)
public Pais getPaisEstudiante() {
return this.pais_estudiante;
}

public void setPaisEstudiante(Pais pais_estudiante) {
this.pais_estudiante = pais_estudiante;
}

}
Pais.class

Código:
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "Pais")
public class Pais {
	
	private long id_pais;
	private String nombre_pais;
	
	
	public Pais(){
	}
	
	public Pais(String pais){
		nombre_pais=pais;
		
	}
	@Id
	@GeneratedValue
	@Column(name = "ID_Pais")
	public long getIdPais() {
		return this.id_pais;
	}
	
	public void setIdPais(long id_pais) {
		this.id_pais = id_pais;
	}
	
	
	@Column(name = "Nombre_Pais", nullable = false, length=250)
	public String getNombrePais() {
		return this.nombre_pais;
	}
	 
	public void setNombrePais(String nombre_pais) {
		this.nombre_pais = nombre_pais;
	}	

}
Código de configuración de Hibernate:

Código:
	<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://localhost/Proyecto"/>
		<property name="username" value="root"/>
		<property name="password" value="root"/>
	</bean>
	
	<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="myDataSource" />
		<property name="annotatedClasses">
			<list>
		<value>com.domain.Estudiante</value>				       <value>com.domain.Pais</value>						
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.hbm2ddl.auto">create</prop>
			</props>
		</property>
	</bean>
No se que he puesto mal... en <prop key="hibernate.hbm2ddl.auto">create</prop> también probé poniendo en vez que "create" "update" y nada.

Aprovecho para preguntar, ¿cómo puedo acceder desde Java a la propiedad "nombre_pais" de la clase "Pais"? Tengo entendido que con Hibernate no hay que hacer Joins con sentencias sql, que puedes hacer el join tratando con objetos, algo como estudiante.pais[0] o algo así, ¿alguien me lo puede aclarar?


Muchas gracias


Un saludo