2009-12-10 3 views
0

Ce serait bien si quelqu'un pouvait me montrer comment utiliser setRestrictions méthode whitch appartient à l'objet EntityQuery du paquet org.jboss.seam.framework.EntityQuery.EntityQuery.setRestrictions et EJBQL avec des paramètres

J'ai essayé de l'utiliser de cette façon:

... 
import org.jboss.seam.framework.EntityQuery; 
import org.jboss.seam.core.Expressions.ValueExpression; 

public class LetterList extends EntityQuery<Letter> 
{ 
    public LetterList() 
    { 
     setEjbql("select letter from Letter letter"); 
    } 

    public void sampleMethod(){     
     List<ValueExpression> restrictions = new ArrayList<ValueExpression>(); 
     restrictions.add(createValueExpression("letter.id=7")); 
     setRestrictions(restrictions);    
    } 

} 

Cependant, ce morceau de code renvoie une exception.

Les lignes suivantes conduisent à l'erreur aussi:

String[] RESTRICTIONS = {"letter.id=7"}; 
setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS)); 

Il est également intéressant s'il est possible de passer tous les paramètres de la bonne façon en utilisant setEjbql. Je veux dire s'il est possible d'éviter la concaténation.

J'ai vraiment essayé de trouver quelques exemples de code pertinent, mais en vain. Donc, j'apprécierais grandement quelques lignes de code qui fonctionnent.

Répondre

0

Essayez l'exemple suivant:

@Name("letterList") // (1) 
public class LetterList extends EntityQuery<Letter> { 

    private Long letterId; 

    public LetterList() { 
     setEjbql("select letter from Letter letter"); 
     setRestrictionExpressionStrings(Arrays.asList(new String[] { 
      "letter.id = #{letterList.letterId}" // (2) 
     })); 
    } 

    public Long getLetterId() { // (3) 
     return letterId; 
    } 
    public void setLetterId(Long letterId) { 
     this.letterId = letterId; 
    } 
} 

Notez les trois emplacements de commentaire:

  1. L'annotation @Name déclare votre classe en tant que composant de couture.
  2. Chaque expression de restriction doit contenir exactement une expression à évaluer, ni plus ni moins. Il ne peut pas être utilisé avec une constante comme dans votre exemple.
  3. Vous devez définir un getter pour chaque propriété que vous référencez dans les expressions de restriction.
Questions connexes