Consulta JPA

19 respostas
E

Pessoal tenho a seguinte estrutura de entidades

Albuns e Foto … A entidade Albuns tem um List de Foto veja … e quero faze um select aonde me retorne Todos Albuns aonde o atributo publicado da
Foto
é igual a ‘SIM’

Veja o meu select como está

public List<Album> buscarAlbunsDoCliente(Integer idCliente) throws Exception {
        em = getEntityManager();

        List<Album> albuns = new ArrayList<Album>();
        try {
            Query consultaCliente = em.createQuery("SELECT p FROM Pessoa p WHERE p.id = :id ");
            consultaCliente.setParameter("id", idCliente);
            Pessoa pessoa = (Pessoa) consultaCliente.getSingleResult();

            if (pessoa.getPerfil().equals(Perfil.ADMINISTRADOR)) {
                Query consulta = em.createQuery("SELECT a FROM Album a WHERE a.fotos.publicado = 'SIM' ");
                albuns = consulta.getResultList();
            } else {
                Query consulta = em.createQuery("SELECT a FROM Album a WHERE a.cliente.id = :id AND a.fotos.publicado = 'SIM'");
                consulta.setParameter("id", idCliente);
                albuns = consulta.getResultList();
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        } finally {
            em.close();
            return albuns;
        }

porem gera a seguinte execeção

java.lang.IllegalArgumentException: org.hibernate.QueryException: illegal attempt to dereference collection [album0_.id.fotos] with element property reference [publicado] [SELECT a FROM entidades.Album a WHERE a.fotos.publicado = 'SIM' ]
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1201)
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
        at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:275)
        at persistencias.AlbumDAO.buscarAlbunsDoCliente(AlbumDAO.java:31)
        at negocios.AlbumBO.buscarAlbunsDoCliente(AlbumBO.java:53)
        at apresentacao.AlbumVisualizacaoMB.buscarAlbunsDoCliente(AlbumVisualizacaoMB.java:137)
        at apresentacao.AlbumVisualizacaoMB.<init>(AlbumVisualizacaoMB.java:51)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
        at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
        at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:405)
        at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:267)
        at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
        at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
        at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
        at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69)
        at org.apache.el.parser.AstValue.getValue(AstValue.java:112)
        at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
        at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:102)
        at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190)
        at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178)
        at javax.faces.component.UIOutput.getValue(UIOutput.java:168)
        at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:338)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:295)
        at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
        at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
        at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:58)
        at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46)
        at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:225)
        at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:148)
        at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:75)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620)
        at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
        at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
        at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:662)
Caused by: org.hibernate.QueryException: illegal attempt to dereference collection [album0_.id.fotos] with element property reference [publicado] [SELECT a FROM entidades.Album a WHERE a.fotos.publicado = 'SIM' ]
        at org.hibernate.hql.ast.tree.DotNode$1.buildIllegalCollectionDereferenceException(DotNode.java:68)

etc..

Aqui esta a estrutura de entidades, só uma OBSERVAÇÃO o atributo publicado é um ENUM que contem SIM ou NAO no banco

Foto

@Entity
@Table(name = "Foto")
public class Foto implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Integer id;
    @Column(name = "nome", nullable = true)
    private String nome;
    @Lob   
    private byte[] foto;
    @Column(name = "publicado", nullable = false)
    private Publicado publicado;
    @Column(name = "selecionada", nullable = false)
    private Boolean selecionada;
    @Transient
    private String selecionadaAuxiliar;
    @Temporal(javax.persistence.TemporalType.DATE)
    @Column(name = "dataPublicacao", nullable = true)
    private Date dataPublicada;
    @Transient
    private StreamedContent streamedContent;
  

    //Construtor
    public Foto() {
        this.setPublicado(Publicado.NAO);
        this.setSelecionada(Boolean.FALSE);
     }

//get set

}

Album

@Entity
@Table(name = "Album")
public class Album  implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Integer id;
    @OneToOne(cascade=CascadeType.DETACH)
    private Pessoa cliente;
    @OneToMany(cascade=CascadeType.ALL , fetch=FetchType.EAGER)
    @JoinColumn(name="fotos", referencedColumnName="id")
    @Column(name = "fotos", nullable = false)
    private List<Foto> fotos;
    @Column(name = "descricao", nullable = true)
    private String descricao;

    //Construtor
    public Album(){
        this.setCliente(new Pessoa());
        this.setFotos(new ArrayList<Foto>());

    }

    //Get e Set
}

Deste já agradeço

19 Respostas

taaqui
@Column(name = "publicado", nullable = false)  
     private Publicado publicado;
Seria:
@Enumerated(value=EnumType.STRING)
private PublicadoEnum publicado;
Cria um Enum de publicado
public Enum PublicadoEnum {
              SIM,NAO
}
tenta ae.
E

cara , acho que vc nao intendeu, esse enun ja esta criado eu no não coloquei ele ai,

o problema é na consulta que gera a exceção…

muito obrigado

taaqui

Oba amigo, posta o enum de publicado pra gente ver.

E
public enum Publicado { SIM,NAO;


  private Boolean publicado;

  Publicado(){


  }

    public Boolean getPublicado() {
        if(this.equals(Publicado.SIM)){
            this.publicado = Boolean.TRUE;
        }else{
            this.publicado = Boolean.FALSE;
        }
        return publicado;
    }

    public void setPublicado(Boolean publicado) {
        this.publicado = publicado;
    }

}

TENTEI ESSA CONSULTA TBM

public List<Album> buscarAlbunsDoCliente(Integer idCliente) throws Exception {
        em = getEntityManager();

        List<Album> albuns = new ArrayList<Album>();
        try {
            Query consultaCliente = em.createQuery("SELECT p FROM Pessoa p WHERE p.id = :id ");
            consultaCliente.setParameter("id", idCliente);
            Pessoa pessoa = (Pessoa) consultaCliente.getSingleResult();

            if (pessoa.getPerfil().equals(Perfil.ADMINISTRADOR)) {
                Query consulta = em.createQuery("SELECT a FROM Album a WHERE a.fotos.publicado = true");
                albuns = consulta.getResultList();
            } else {
                Query consulta = em.createQuery("SELECT a FROM Album a WHERE a.cliente.id = :id AND a.fotos.publicado = true");
                consulta.setParameter("id", idCliente);
                albuns = consulta.getResultList();
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        } finally {
            em.close();
            return albuns;
        }

acho que ele grava boolean no banco,não tinha visto direito,enfim contua dando a seguinte exceçãi

Caused by: org.hibernate.QueryException: illegal attempt to dereference collection [album0_.id.fotos] with element property reference [publicado] [SELECT a FROM entidades.Album a WHERE a.fotos.publicado = true]
        at org.hibernate.hql.ast.tree.DotNode$1.

obrigado

taaqui

Amigo, acho que você tem que declarar que publicado é verdadeiramente um enum com a anotação @Enumerated(value=EnumType.STRING).
Até então eu acho que ele esta tratando aquele “publicado” como uma Table.
Faça o teste que postei lá em cima, e me desculpe se estiver errado.

E

mais não tem como funcionar assim?

taaqui

Não, da uma testada ae, estou sem condições agora, pelo PC horrivel que me encontro.

E

Beleza vou testar aqui da outra forma, mais tem que ter um forma de funcionar dest jeito

taaqui

Fiz um pequeno teste com Aluno parecido com o seu Foto e mandei gerar a base.

Apenas com @Column
create table Aluno (periodo integer, statusMatricula integer, id integer not null, curso_id integer, primary key (id))
Vai realmente complicar passando uma String para StatusMatricula. :slight_smile:

Com Anotação @Enumerated(EnumType.STRING)
create table Aluno (periodo integer, statusMatricula varchar(255), id integer not null, curso_id integer, primary key (id))

E

amigo se eu mudar para enum “colocar a anotação enum”

gera o seguinte erro

GRAVE: Exception loading sessions from persistent storage  
java.lang.NullPointerException  
        at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768)  
        at org.hibernate.impl.SessionFactoryObjectFactory.getNamedInstance(SessionFactoryObjectFactory.java:159)  
        at org.hibernate.impl.SessionFactoryImpl.readResolve(SessionFactoryImpl.java:753)  
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
        at java.lang.reflect.Method.invoke(Method.java:597)  
        at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1761)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)  
        at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:479)  
        at org.hibernate.ejb.AbstractEntityManagerImpl.readObject(AbstractEntityManagerImpl.java:1104)  
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
        at java.lang.reflect.Method.invoke(Method.java:597)  
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)  
        at java.util.HashMap.readObject(HashMap.java:1030)  
        at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)  
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
        at java.lang.reflect.Method.invoke(Method.java:597)  
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1666)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1322)  
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)  
        at java.util.HashMap.readObject(HashMap.java:1030)  
        at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)  
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
        at java.lang.reflect.Method.invoke(Method.java:597)  
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1666)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1322)  
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)  
        at java.util.HashMap.readObject(HashMap.java:1030)  
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
        at java.lang.reflect.Method.invoke(Method.java:597)  
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)  
        at java.util.HashMap.readObject(HashMap.java:1030)  
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
        at java.lang.reflect.Method.invoke(Method.java:597)  
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)  
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)  
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)  
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)  
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)  
        at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1485)  
        at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:987)  
        at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:394)  
        at org.apache.catalina.session.StandardManager.load(StandardManager.java:321)  
        at org.apache.catalina.session.StandardManager.start(StandardManager.java:648)  
        at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:446)  
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)  
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)  
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)  
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)  
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)  
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)  
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)  
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)  
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)  
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)  
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)  
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)  
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)  
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)  
        at org.apache.catalina.core.StandardService.start(StandardService.java:525)  
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)  
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)  
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
        at java.lang.reflect.Method.invoke(Method.java:597)  
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)  
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

eu não queria mudar a estrutura estava funcionando certinhu,queria um jeito de resolver ;D MANTENDO a mesma estrutura

Obrigado

E

mais alguem?

taaqui

amigo você pode dar um “desc Foto;” no banco para gente e colar aqui?

E

Mano se viu como eu mapiei né? era para o album ter um list de Foto, veja como esta

Album
id
descricao
cliente_id

Foto

id
dataPublicacao
foto
publicado
selecionada
fotos

publicado ele esta 0 e 1

E

tirei o joincolum e ele crio uma tabela intermediaria

select Album_id , descricao , fotos_id , dataPublicacao, foto, nome, publicado, selecionada from album, album_foto, foto WHERE 
album.id = album_foto.Album_id AND
foto.id  =  album_foto.fotos_id AND
foto.publicado = 0 AND
album.cliente_id =: id

em SQL seria assim , como acima

E

^^?

taaqui

Cola tudo que você fez até agora, explicar o codigo e tambem diz o que você quer.

E

tudo que eu fiz até agora , esta na descrição do post na primera mensagem que eu enviei.

É aquela estrutura

se vc observar na entidade Album tem o joinColum da foto eu apenas tirei ele para criar uma tabela intermediaria, a unica coisa que eu quero , e fazer um select aonde me retorne Todos Albuns aonde o atributo publicado da
Foto é igual a 0

E

mais alguem pessoal pode me ajudaR?

E

pessoal consegui

Query consulta = em.createQuery("SELECT a from Album a LEFT JOIN a.fotos f WHERE f.publicado = 0 AND a.cliente.id =: id  ");
Criado 23 de maio de 2011
Ultima resposta 26 de mai. de 2011
Respostas 19
Participantes 2