JPA Recuperar atributo List [RESOLVIDO]

Boa noite pessoal.

Eu e meu grupo de tcc estamos apanhando com a seguinte situação:
Temos um atributo List<Produto> na entity ListaCompras, que quando damos um persist é salvo no cascade.
Nossa dificuldade está em recuperar essa List, já que pelo relacionamento @OneToMany, ele criou uma tabela lista_compras_produto.
Qual seria a JPA que devemos criar para recuperar essa lista?
Obs: Estamos usando JBoss Seam 2.1 e JPA com Hibernate.

Seguem as classes:

Produto.java

package br.com.e2u.entity;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Transient;

import org.jboss.seam.annotations.Name;

import br.com.e2u.util.DataHora;

@Name("produto")
@Entity
public class Produto implements Serializable{
	
	private static final long serialVersionUID = 2375123736077052214L;
	private Integer id;
	private String codigo;
	private String categoria;
	private String nome;
	private String descricao;
	private Double valor;
	private Double valorPromocional;
	private Calendar validadeValorPromocional;
	private Double valorVigente;
	private byte[] imagem;
	private String tipo;
	private Usuario mantenedor;
	private Integer quantidade;
	
	public Produto() {}

	@Id
	@SequenceGenerator(name="produto_seq_id", sequenceName="produto_seq_id")
	@GeneratedValue(generator="produto_seq_id", strategy=GenerationType.AUTO)
	public Integer getId() {
		return id;
	}

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

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getCategoria() {
		return categoria;
	}

	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Double getValor() {
		return valor;
	}

	public void setValor(Double valor) {
		this.valor = valor;
	}

	@Column(name="valor_promocional")
	public Double getValorPromocional() {
		return valorPromocional;
	}

	public void setValorPromocional(Double valorPromocional) {
		this.valorPromocional = valorPromocional;
	}

	@Column(name="validade_valor_promocional")
	public Calendar getValidadeValorPromocional() {
		return validadeValorPromocional;
	}

	public void setValidadeValorPromocional(Calendar validadeValorPromocional) {
		this.validadeValorPromocional = validadeValorPromocional;
	}

	@Transient
	public Double getValorVigente() {
		if((validadeValorPromocional == null) || (validadeValorPromocional.before(DataHora.getData(new Date(), "yyyy-MM-dd hh:mm")))){
			valorVigente = valor;
		}else{
			valorVigente = valorPromocional;
		}
		return valorVigente;
	}
	
	public void setValorVigente(Double valorVigente) {
		this.valorVigente = valorVigente;
	}
	
	@Lob
	@Basic(fetch=FetchType.LAZY)
	public byte[] getImagem() {
		return imagem;
	}

	public void setImagem(byte[] imagem) {
		this.imagem = imagem;
	}
	
	@Column(name="tipo_arquivo")
	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
	
	@ManyToOne(cascade=CascadeType.ALL)
	public Usuario getMantenedor() {
		return mantenedor;
	}

	public void setMantenedor(Usuario mantenedor) {
		this.mantenedor = mantenedor;
	}

	@Transient
	public Integer getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}
	
}

ListaCompras.java

package br.com.e2u.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.jboss.seam.annotations.Name;

@Entity
@Name("listaCompras")
@Table(name="lista_compras")
public class ListaCompras implements Serializable {

	private static final long serialVersionUID = -5947131327037577828L;
	private Integer id;
	private Usuario usuario;
	private String nomeLista;
	private String descricao;
	private Date validadeLista;
	private List&lt;Produto&gt; itens;
	
	public ListaCompras() {}

	@Id
	@SequenceGenerator(name="lista_compras_id_seq", sequenceName="lista_compras_id_seq")
	@GeneratedValue(generator="lista_compras_id_seq", strategy=GenerationType.AUTO)
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}

	@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	@Column(name="nome_lista")
	public String getNomeLista() {
		return nomeLista;
	}
	public void setNomeLista(String nomeLista) {
		this.nomeLista = nomeLista;
	}
	
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	
	@Column(name="validade_lista")
	public Date getValidadeLista() {
		return validadeLista;
	}
	public void setValidadeLista(Date validadeLista) {
		this.validadeLista = validadeLista;
	}

	@OneToMany(cascade=CascadeType.ALL)
	public List&lt;Produto&gt; getItens() {
		return itens;
	}
	public void setItens(List&lt;Produto&gt; itens) {
		this.itens = itens;
	}
	
}

No managedBean, estamos tentando algo parecido com:

	@Factory("itens")
	public void listarItensLista(){
		//if(!listaCompras.getNomeLista().equalsIgnoreCase("")){
			/*Query query = entityManager.createQuery("from ListaCompras.itens lci where id = ?1");
			query.setParameter(1, itens.get(0).getId());
			List&lt;Produto&gt; prod = query.getResultList();
			*/
			List&lt;Produto&gt; prod = entityManager.createQuery("itens from ListaCompras lc").getResultList();
			for (Produto produto : prod) {
				itens.add(produto);
			}	
		//}
	}

O erro:

20:09:58,149 ERROR [PARSER] line 1:1: unexpected token: itens
20:09:58,149 ERROR [viewhandler] Error Rendering View[/xhtml/lista_compras/itens_lista_compras_edit.xhtml]
java.lang.IllegalArgumentException: node to traverse cannot be null!
	at org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:55)
	at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:277)
	at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
	at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)
	at org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:101)
	at org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:80)
	at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
	at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
	at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
	at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1650)
	at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:93)
	at org.jboss.seam.persistence.EntityManagerProxy.createQuery(EntityManagerProxy.java:81)
	at br.com.e2u.session.ListaComprasItensManager.listarItensLista(ListaComprasItensManager.java:89)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
	at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
	at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.ConversationInterceptor.aroundInvoke(ConversationInterceptor.java:65)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
	at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
	at br.com.e2u.session.ListaComprasItensManager_$$_javassist_9.listarItensLista(ListaComprasItensManager_$$_javassist_9.java)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
	at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144)
	at org.jboss.seam.Component.callComponentMethod(Component.java:2211)
	at org.jboss.seam.Component.getInstanceFromFactory(Component.java:2043)
	at org.jboss.seam.Component.getInstance(Component.java:1978)
	at org.jboss.seam.Component.getInstance(Component.java:1950)
	at org.jboss.seam.Component.getInstance(Component.java:1944)
	at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
	at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
	at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:166)
	at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:53)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
	at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
	at javax.faces.component.UIData.getValue(UIData.java:609)
	at javax.faces.component.UIData.getDataModel(UIData.java:1124)
	at javax.faces.component.UIData.setRowIndex(UIData.java:451)
	at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:77)
	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:813)
	at javax.faces.component.UIData.encodeBegin(UIData.java:962)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:280)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262)
	at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:220)
	at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:215)
	at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:121)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:234)
	at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:106)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:234)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:180)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:127)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:282)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262)
	at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:220)
	at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:215)
	at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:121)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:196)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
	at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
	at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	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:235)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
20:09:58,196 ERROR [PARSER] line 1:1: unexpected token: itens

Estamos realmente com muita dificuldade, quem puder ajudar ficaremos gratos e prometemos postar aqui a solução.

via query: List&lt;Produto&gt; prod = entityManager.createQuery("p from Produto p, ListaCompras lc where p.id = lc.itens.id and lc.id = :listaId ").setParameter("listId",idDaLista).getResultList();

Lavieri, agora estou tendo outro erro:

org.hibernate.QueryException: illegal attempt to dereference collection [listacompr1_.id.itens] with element property reference [id] [from br.com.e2u.entity.Produto p, br.com.e2u.entity.ListaCompras lc where p.id = lc.itens.id and lc.id = ?1 ]

O que pode estar acontecendo?

Pessoal, alteramos o mapeamento da classe para @OneToMany e pronto, foi só buscar por Id que funcionou.
Obrigado a todos.