JPA generico

6 respostas
M

Olá

Desenvolvi uma aplicação com CRUD genérico do jpa, porém ele só retorna o id de uma tabela relacionada e eu preciso recuperar mais dados da tabela relacionada.
Por exemplo: minha tabela endereço possui um relacionamento com a tabela de bairros. O list me retorna somente o id do bairro que é a chave estrangeira e eu preciso que ele me retorne também o nome do bairro na lista de endereços, mas não consigo fazer funcionar. Eis o trecho da minha classe endereço controller que se relaciona com outras tabelas:

@Entity
@Table(name = "ENDERECO", catalog = "", schema = "SIMULA")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Endereco.findAll", query = "SELECT e FROM Endereco e"),
    @NamedQuery(name = "Endereco.findByIdendereco", query = "SELECT e FROM Endereco e WHERE e.idendereco = :idendereco"),
    @NamedQuery(name = "Endereco.findByNumero", query = "SELECT e FROM Endereco e WHERE e.numero = :numero"),
    @NamedQuery(name = "Endereco.findByCep", query = "SELECT e FROM Endereco e WHERE e.cep = :cep"),
    @NamedQuery(name = "Endereco.findByComplemento", query = "SELECT e FROM Endereco e WHERE e.complemento = :complemento"),
    @NamedQuery(name = "Endereco.findByZona", query = "SELECT e FROM Endereco e WHERE e.zona = :zona"),
    @NamedQuery(name = "Endereco.findByUnidade", query = "SELECT e FROM Endereco e WHERE e.unidade = :unidade"),
    @NamedQuery(name = "Endereco.findByLatitude", query = "SELECT e FROM Endereco e WHERE e.latitude = :latitude"),
    @NamedQuery(name = "Endereco.findByLongitude", query = "SELECT e FROM Endereco e WHERE e.longitude = :longitude")})
public class Endereco implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "IDENDERECO", nullable = false)
    private Long idendereco;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 10)
    @Column(name = "NUMERO", nullable = false, length = 10)
    private String numero;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 8)
    @Column(name = "CEP", nullable = false, length = 8)
    private String cep;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "COMPLEMENTO", nullable = false, length = 20)
    private String complemento;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 1)
    @Column(name = "ZONA", nullable = false, length = 1)
    private String zona;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 10)
    @Column(name = "UNIDADE", nullable = false, length = 10)
    private String unidade;
    @Size(max = 10)
    @Column(name = "LATITUDE", length = 10)
    private String latitude;
    @Size(max = 10)
    @Column(name = "LONGITUDE", length = 10)
    private String longitude;
    @JoinColumn(name = "IDLOGRADOURO", referencedColumnName = "IDLOGRADOURO", nullable = false)
    @ManyToOne(optional = false)
    private Logradouro idlogradouro;
    @JoinColumn(name = "IDCIDADE", referencedColumnName = "IDCIDADE", nullable = false)
    @ManyToOne(optional = false)
    private Cidade idcidade;
    
    @JoinColumn(name = "IDBAIRRO", referencedColumnName = "IDBAIRRO", nullable = false)
    @ManyToOne(optional = false)
    private Bairro idbairro;

Alguem poderia me explicar como retornar o nome do bairro?

Obrigada

6 Respostas

W

Amigo isso não é generico

W

Voce tem que criar uma Query e passar o nome dessa query, dessa forma você retorna ou uma lista, ou um objeto inteiro

W
referencedColumnName = "IDLOGRADOURO", nullable = false)

remove essa parte

Hebert_Coelho

Oq vc entende por genérico?

Se você quer exemplos de DAO Genéricos aqui tem dois: Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate, Aplicação Web Completa JSF EJB JPA JAAS.

Uma Entity não tem como ser genérica, ela tem que ser tipada.

M

Desculpe, não me expressei bem, não é jpa genérico. Eu gerei um projeto automaticamente em jpa pelo netbeans, não sou experiente na liguangem.

Vou testar as sugestões, obrigada

M

Tá complicado mesmo. A geração deste codigo foi automatica no netbeans e nada que eu tento personalizar funciona…

Criado 3 de agosto de 2012
Ultima resposta 3 de ago. de 2012
Respostas 6
Participantes 3