
17/08/2009, 13:48
|
| | Fecha de Ingreso: agosto-2009
Mensajes: 2
Antigüedad: 15 años, 6 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!! |