select from several where criteria jpa
===

i'm developping a software wich allows an user to select dynamicly one or several users from a database using jpa/Criteria.
I can't figure out how to add dynamicly where clauses(name,group,age,..) without using JPQL and working with strings.

Here is the sql version which works
`try{
	String selectString ="SELECT  * FROM mitarbeitertabelle WHERE ";
	selectString=StringModulierung(selectString);

	PreparedStatement selectMitarbeiter = con.prepareStatement(selectString);
	int i =1;
	if(isNameSuche()){selectMitarbeiter.setString (i,this.wc+_Name+this.wc); i++;}
	if(isVornameSuche()){ selectMitarbeiter.setString (i, this.wc+_Vorname+this.wc); i++;}
	if(isPersonalnummerSuche()){selectMitarbeiter.setString (i, this.wc+_Personalnummer+this.wc); i++;}
	if(isPC_NameSuche()){selectMitarbeiter.setString (i, this.wc+_PC_Name+this.wc); i++;}
	if(isIPSuche()){selectMitarbeiter.setString (i, this.wc+_IP+this.wc); i++;}
	if(isTelefonSuche()){ selectMitarbeiter.setString (i, this.wc+_Telefon+this.wc); i++;}
	if(isGeburtstagSuche()){selectMitarbeiter.setString (i, this.wc+_Geburtstag+this.wc); i++;}
	if(isGruppeSuche()){ selectMitarbeiter.setString (i, this.wc+_Gruppe+this.wc); i++;}
	if(isMobilSuche()){ selectMitarbeiter.setString (i, this.wc+_Mobil+this.wc); i++;}
	
	System.out.println(selectMitarbeiter.toString());
	ResultSet ergebnis=selectMitarbeiter.executeQuery();`

Here's what i've done with jpa: `CriteriaBuilder cb = EM.getCriteriaBuilder();
		CriteriaQuery<Mitarbeiter2> q = cb.createQuery(Mitarbeiter2.class);
		Root<Mitarbeiter2> mit= q.from(Mitarbeiter2.class);
		
		
		
		ParameterExpression<String> pc_name = cb.parameter(String.class);
		ParameterExpression<String> ip = cb.parameter(String.class);
		ParameterExpression<String> pers_num = cb.parameter(String.class);
		ParameterExpression<String> name = cb.parameter(String.class);
		ParameterExpression<String> vorname = cb.parameter(String.class);
		ParameterExpression<String> telefon = cb.parameter(String.class);
		ParameterExpression<String> geburtstag = cb.parameter(String.class);
		ParameterExpression<String> gruppe = cb.parameter(String.class);
		ParameterExpression<String> mobil = cb.parameter(String.class);
		
		if(isPC_NameSuche()){
			q.where(cb.equal(mit.get("PC_Name"), pc_name));}
		if(isIPSuche()) {
			q.where(cb.equal(mit.get("IP"),ip));}
		if(isPersonalnummerSuche()) {
			q.where(cb.equal(mit.get("Personalnummer"), pers_num));}
		if(isNameSuche()){
			q.where(cb.equal(mit.get("Name"), name));}
		if(isVornameSuche()) {
			q.where(cb.equal(mit.get("Vorname"), vorname));}
		if(isTelefonSuche()) {
			q.where(cb.equal(mit.get("Telefon"), telefon));}
		if(isGeburtstagSuche()){
			q.where(cb.equal(mit.get("Geburtstag"),geburtstag));}
		if(isGruppeSuche()) {
			q.where(cb.equal(mit.get("Gruppe"),gruppe));}
		if(isMobilSuche()) {
			q.where(cb.equal(mit.get("Mobil"),mobil));}
                q.select(mit);
		List<Mitarbeiter2> ergebnis= EM.createQuery(q).getResultList();`


This code doesn't work:`java.lang.IllegalStateException: Query argument 9949215 not found in the list of parameters provided during query execution.`

Thanks for your help ;) .

Harald