Tratar select hibernate

Essa chamada

manager.createQuery("Select p from "+Counter.class.getName()+" p where      
machine_id="+machine.getId()+" and counter = C1",Counter.class).getSingleResult();

Quando não encontra nenhum valor que entre no where. Ele da um erro.

Aug 02, 2016 5:05:10 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/PosReport] threw exception [Request processing failed; nested exception is javax.persistence.NoResultException: No entity found for query] with root cause
javax.persistence.NoResultException: No entity found for query

Em especifico de uma maquina nao tem o tal do C1, como posso tratar que, quando não vier nada é para ele ir pro próximo?

Mais porque essa concatenação toda ?

varias tabelas. eu consegui resolver de outra forma.

		List<Counter> listCounter = manager.createQuery("Select p from "+Counter.class.getName()+" p where machine_id="+machine.getId(),Counter.class).getResultList();
		long c1=0;
		long c2=0;
		
		for (Counter counter : listCounter) {
			if(counter.getCounter().equals("C1")&&counter.getMachineId()==machine.getId()){
				c1 = counter.getValue();
			}
			if(counter.getCounter().equals("C2")&&counter.getMachineId()==machine.getId()){
				c2 = counter.getValue();
			}
		}
		
		long calc = c1-c2;
		return calc;
	}```

quando nao tem ele nao faz o calculo. mas eu gostaria de saber porque o getSingleResult nao é bem vindo... andei pesquisando e parece que nao é uma boa pratica usarmos... Mas se eu só quero 1 resultado, qual é o problema?