Ver Mensaje Individual
  #8 (permalink)  
Antiguo 17/08/2009, 13:48
taokiun
 
Fecha de Ingreso: agosto-2009
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: JSF, EJB3 consulta con mas de 1000 registros

Disculpa voy a tomar tu tema para hacer una consulta..... tengo una aplicacion con 2 tablas pero no tengo idea ... como relacionar las tablas para luego mesclar resultados.....

estas son las tablas por ejemplo

Tabla: Paises
paisid
paisnom

Tabla: Usuarios
id
paisid
usuario

creo en las entidades por cada tabla....

entities
Usuario.java ( de la tabla Usuarios)

package cl.santiago.entity;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
*
* @author rrodriguez
*/
@Entity
@Table(name = "usuarios")
//@NamedQueries({@NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u"), @NamedQuery(name = "Usuario.findById", query = "SELECT u FROM Usuario u WHERE u.id = :id"), @NamedQuery(name = "Usuario.findByNick", query = "SELECT u FROM Usuario u WHERE u.nick = :nick"), @NamedQuery(name = "Usuario.findByPassword", query = "SELECT u FROM Usuario u WHERE u.password = :password"), @NamedQuery(name = "Usuario.findByNombre", query = "SELECT u FROM Usuario u WHERE u.nombre = :nombre"), @NamedQuery(name = "Usuario.findByApellido", query = "SELECT u FROM Usuario u WHERE u.apellido = :apellido"), @NamedQuery(name = "Usuario.findByDireccion", query = "SELECT u FROM Usuario u WHERE u.direccion = :direccion")})


public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@Column(name = "nick")
private String nick;
@Basic(optional = false)
@Column(name = "password")
private String password;

@Basic(optional = false)
@Column(name = "pais")
private String pais;

// algo asi dicen que se puede hacer
@OneToMany(cascade = CascadeType.ALL, mappedBy = "propietario")
private Collection capitalCollection;
@JoinColumn(name = "paisid", referencedColumnName = "1")
//

@Basic(optional = false)
@Column(name = "nombre")
private String nombre;
@Basic(optional = false)
@Column(name = "apellido")
private String apellido;
@Basic(optional = false)
@Column(name = "direccion")
private String direccion;

public Usuario() {
}

public Usuario(Integer id) {
this.id = id;
}

public Usuario(Integer id, String pais, String nick, String password, String nombre, String apellido, String direccion) {
this.id = id;
this.pais = pais;
this.nick = nick;
this.password = password;
this.nombre = nombre;
this.apellido = apellido;
this.direccion = direccion;
}

public Integer getId() {
return id;
}

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

public String getNick() {
return nick;
}

public void setNick(String nick) {
this.nick = nick;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellido() {
return apellido;
}

public void setApellido(String apellido) {
this.apellido = apellido;
}

public String getDireccion() {
return direccion;
}

public void setDireccion(String direccion) {
this.direccion = direccion;
}

public String getPais() {
return pais;
}

public void setPais(String pais) {
this.pais = pais;
}

}





entities
Pais.java ( de la tabla Pais)


package cl.santiago.entity;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;

/**
*
* @author rrodriguez
*/
@Entity
@Table(name = "pais")
@NamedQueries({@NamedQuery(name = "Pais.findAll", query = "SELECT p FROM Pais p"), @NamedQuery(name = "Pais.findByPaisId", query = "SELECT p FROM Pais p WHERE p.paisId = :paisId"), @NamedQuery(name = "Pais.findByPaisNom", query = "SELECT p FROM Pais p WHERE p.paisNom = :paisNom")})
public class Pais implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "paisid")
private Integer paisId;
@Basic(optional = false)
@Column(name = "paisnom")
private String paisNom;

public Pais() {
}



@EmbeddedId
protected Pais paisPK;
@JoinColumns({@JoinColumn(name = "paisid", referencedColumnName = "paisid", insertable = false, updatable = false)})
@OneToOne(optional = false)
private Usuario usuario;

public Pais(Integer paisId) {
this.paisId = paisId;
}

public Pais(Integer paisId, String paisNom) {
this.paisId = paisId;
this.paisNom = paisNom;
}

public Integer getPaisId() {
return paisId;
}

public void setPaisId(Integer paisId) {
this.paisId = paisId;
}

public String getPaisNom() {
return paisNom;
}

public void setPaisNom(String paisNom) {
this.paisNom = paisNom;
}

@Override
public int hashCode() {
int hash = 0;
hash += (paisId != null ? paisId.hashCode() : 0);
return hash;
}


}



pero no se como mesclar las tablas y luego mostra todo por un jsf .. a continuacion les muestro como listo SOLO datos del usuarios.... ideal seria mostrar los datos
-------------------------------

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http: // java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http: // java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http: // java.sun.com/jsf/core" prefix="f"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Listado de Clientes</title>
</head>
<body>

<f:view>
<h:form>
<h:messages></h:messages>
<h:commandButton action="create" value="Nuevo Usuario"/>

<h1><h:outputText value="Listado de Usuarios"/></h1>
<h:dataTable value="#{UsuarioController.todos}" var="u" border="1">

<h:column>
<f:facet name="header">
<h:outputText value="Id"/>
</f:facet>
<h:outputText value="#{u.id}"/>
</h:column>

<h:column>
<f:facet name="header">
<h:outputText value="paisnom"/>
</f:facet>
<h:outputText value="#{u.paisnom}"/>
</h:column>



<h:column>
<f:facet name="header">
<h:outputText value="Nombre"/>
</f:facet>
<h:outputText value="#{u.nombre}"/>
</h:column>


</h:dataTable>

<br/>


</h:form>
</f:view>

</body>
</html>
-------------------------------
Bueno algo asi es la idea ...


Estoy ocupando las tecnogias ejb,glasshFish v2.1, mysql,etc

si tienes algun manual donde hagan relaciones... de tablas y que sean visualizados en jsp o web ..... AYUDEN POR FAVOR

GRACIAS!!