Jpa criteria Problema ninja

Pessoal , inclui a seguinte linha no meu projeto :


     	EntityManagerFactory factory= Persistence.createEntityManagerFactory("lims-pu");
//////////////// erro na linha abaixo :
		EntityManager manager= factory.createEntityManager();	
	
		CriteriaBuilder cb= manager.getCriteriaBuilder();
		
		CriteriaQuery<Tuple> c1 = cb.createQuery(Tuple.class);
		Root<PrecoPorMetodo> l1 = c1.from(PrecoPorMetodo.class);

O meu erro de log esta abaixo:

09:17:38,548 INFO [SettingsFactory] Default entity-mode: pojo
09:17:38,548 INFO [SettingsFactory] Named query checking : enabled
09:17:38,548 INFO [SessionFactoryImpl] building session factory
09:17:38,548 WARN [ConfigurationFactory] No configuration found. Configuring eh
cache from ehcache-failsafe.xml found in the classpath: jar:file:/C:/evandro/in
stalacao/eclipse-jee-indigo-SR2-win32/jboss-4.2.3.GA/server/default/tmp/deploy/t
mp461432161572421082lims.ear-contents/ehcache-1.2.3.jar!/ehcache-failsafe.xml
09:17:38,558 WARN [CacheManager] Creating a new instance of CacheManager using
the diskStorePath “C:\Users\EVANDR~1.ABR\AppData\Local\Temp” which is already u
sed by an existing CacheManager.
The source of the configuration was classpath.
The diskStore path for this CacheManager will be set to C:\Users\EVANDR~1.ABR\Ap
pData\Local\Temp\ehcache_auto_created_1351772258558.
To avoid this warning consider using the CacheManager factory methods to create
a singleton CacheManager or specifying a separate ehcache configuration (ehcache
.xml) for each CacheManager instance.
09:17:38,558 INFO [SessionFactoryObjectFactory] Not binding factory to JNDI, no
JNDI name configured

Não vi nenhum erro aí, só warnings.

desculpem o resto do erro :

    at java.lang.Thread.run(Thread.java:619)

Caused by: javax.el.ELException: /file:/C:/evandro/instalacao/eclipse-jee-indigo
-SR2-win32/jboss-4.2.3.GA/server/default/tmp/deploy/tmp1643087879052703622lims.e
ar-contents/lims-web-1.0-SNAPSHOT-exp.war/WEB-INF/lib/lims-web-1.0-SNAPSHOT.jar!
/META-INF/tags/componentes/orcamento/itensOrcamento.jspx @233,108 value="#{Mante
rItemOrcamentoMB.itemAtual.totalPorAmostra}": Error reading ‘totalPorAmostra’ on
type br.com.cqa.lims.coleta.orcamento.ItemOrcamentoColetavel
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.ja
va:76)
at javax.faces.component.UIOutput.getValue(UIOutput.java:184)
… 61 more
Caused by: java.lang.NullPointerException
at br.com.cqa.lims.orcamento.PrecoPorMetodo.listaTodosMetodosDaAmostraCo
mPrecoGrupo(PrecoPorMetodo.java:297)
at br.com.cqa.lims.orcamento.ItemOrcamento.getTotalPorAmostra(ItemOrcame
nto.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELRe
solver.java:72)
at org.apache.el.parser.AstValue.getValue(AstValue.java:97)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:1
86)
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.ja
va:71)
… 62 more

[quote]Caused by: java.lang.NullPointerException
at br.com.cqa.lims.orcamento.PrecoPorMetodo.listaTodosMetodosDaAmostraComPrecoGrupo(PrecoPorMetodo.java:297) [/quote]

Posta pelo menos os códigos das suas entidades para termos ideia do tipo de relacionamento que existe entre elas.

[quote=marciobarroso]Posta pelo menos os códigos das suas entidades para termos ideia do tipo de relacionamento que existe entre elas.[/quote]Uai, oq o código de uma entidade vai impactar em um nullpointer? O.o

Pela Criteria que foi criada, parece que ele usa composição para as entidades ( entenda entidade como os pojos que mapeiam ou representam as entidades do banco de dados ).

Muitas vezes esquecemos de inicializar atributos que são usados para fazer o relacionamento.

Caused by: java.lang.NullPointerException at br.com.cqa.lims.orcamento.PrecoPorMetodo.listaTodosMetodosDaAmostraComPrecoGrupo(PrecoPorMetodo.java:297)

Por isso pedi para postar o código das entidades. A classe PrecoPorMetodo parece ser uma entidade.

[quote=marciobarroso]Pela Criteria que foi criada, parece que ele usa composição para as entidades ( entenda entidade como os pojos que mapeiam ou representam as entidades do banco de dados ).

Muitas vezes esquecemos de inicializar atributos que são usados para fazer o relacionamento.

Caused by: java.lang.NullPointerException at br.com.cqa.lims.orcamento.PrecoPorMetodo.listaTodosMetodosDaAmostraComPrecoGrupo(PrecoPorMetodo.java:297)

Por isso pedi para postar o código das entidades. A classe PrecoPorMetodo parece ser uma entidade.[/quote]Mas o JPA já não faz isso por você? Desculpe, estou perguntando pois nunca precisei fazer isso. [=

Vou dar um exemplo do que eu quis dizer… Neste exemplo não estou usando EntityManager e por isso a Critéria é criada de forma diferente.

public class UserDaoImpl extends BaseDaoImpl&lt;User&gt; implements UserDao {
	protected void addPropertiedToCriteria(DetachedCriteria criteria, User example) {
		if ( example.getEmail() != null ) {
			if( example.getEmail().getId() &gt; 0 ) {
				criteria.add(Expression.eq(&quot;email.id&quot;, example.getEmail().getId()));
			}
			if( example.getEmail().getDescription() != null && !&quot;&quot;.equals(example.getEmail().getDescription()) ) {
				criteria.add(Expression.eq(&quot;email.description&quot;, example.getEmail().getDescription()));
			}
		}
	}
}

Se eu não fizer as validações feitas nos ifs, eu teria um monte de nullpointerexception …

A ta, saquei.

Beleza. [=

marciobarroso ,

segue abaixo a entidade:

chamada
*******************************************************************************************
@Entity
@Domain( { "Orcamento", "Coleta", "ExecucaoAnalise" })
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class ItemOrcamento extends EntidadeAuditavel {

	public Dinheiro getTotalPorAmostra() {
		PrecoMetodoEspecificacao precMetEspec = new PrecoMetodoEspecificacao();
..................

}
}





******************************************************************************************
@Entity(name="PrecoPorMetodo") 
@Table(name="preco_por_metodo")

public class PrecoPorMetodo extends Entidade{
	private static final long serialVersionUID = -4715774435380827257L;

	
	private int grupo;
	@ManyToOne
	@JoinColumn(name="metodo_id", nullable=false)
	private Metodo metodo;
	@ManyToOne
	@JoinColumn(name="especificacao_id", nullable=false)
	private Especificacao especificacao;
	@Embedded
	private Dinheiro preco = new Dinheiro();


getters e setters 


public GruposDoMetodo listaGruposDoMetodo(Metodo metodo){
	System.out.println("listaGruposDoMetodo ");
	GruposDoMetodo gruposDoMetodo = new GruposDoMetodo();
	Map<Long, Dinheiro> listaGruposDoMetodo = new HashMap <Long, Dinheiro>();
	gruposDoMetodo.setMetodoId(metodo.getId());
	try{
		OrcamentoServiceBean osb = new OrcamentoServiceBean();
		List<PrecoPorMetodo> resultado1 = osb.selecionaprecopormetodo(metodo.getId().toString());
********************************************************************************************

@Stateless
@LocalBinding(jndiBinding = "OrcamentoServiceBean/local")
public class OrcamentoServiceBean implements OrcamentoServiceLocal {

	@PersistenceContext(unitName = "lims-pu")
	private EntityManager em;

	@EJB(name = "HistoricoServiceBean/local")
	private HistoricoServiceLocal historicoService;

	@EJB(name = "NumeradorServiceBean/local")
	private NumeradorServiceLocal numeradorService;

	@EJB(name = "QuestionarioServiceBean/local")
	private QuestionarioServiceLocal questionarioService;

	@EJB(name = "ConfirmarOrcamentoServiceBean/local")
	private ConfirmarOrcamentoServiceLocal confirmarOrcamentoService;

    public List<PrecoPorMetodo> selecionaprecopormetodo(String vMetodo_id) {
        try {
			StringBuffer sbQuery = new StringBuffer();
			sbQuery.append(" FROM PrecoPorMetodo ");			
		
			Query query = em.createQuery(sbQuery.toString());
			return query.getResultList();	
        	
        }
        catch (Throwable ex) {             
            System.err.println("Initial SessionFactory creation failed.----" + ex);  
            throw new ExceptionInInitializerError(ex);  
        }    	
    }

Quando eu vou no metodo "selecionaprecopormetodo(String vMetodo_id) " o @PersistenceContext(unitName = “lims-pu”)
private EntityManager em; FICA NULLO.

Alguem pode me ajudar ???