1

J'ai deux entités problème et Issue_Tracker. J'ai rejoint les deux tables dans une cartographie de un à plusieurs. En Issue_Tracker, nous pouvons avoir plusieurs entrées commeobtenir mis à jour la ligne dans un mappage un à plusieurs en utilisant hibernate

issue_id tracker_status  tracked_time 
    123  Assigned   1/8/2013 11:44 
    123  Assigned   1/8/2013 11:45 
    123  Completed   1/8/2013 11:52 
    32  Assigned   1/9/2013 16:46 
    33  Assigned   1/9/2013 16:47 
    33  Cancel    1/9/2013 16:49 

Je veux commander l'entité Issue_tracker par tracked_time Je peux seulement obtenir la dernière mise à jour tracker_status .Je me sers des critères pour obtenir des données, mais je reçois première entrée par exemple: pour l'ID de sortie 123, j'obtiens tracker_status comme Affecté, mais je veux récupérer tracker_status : Completed pour l'ID 123. Comment y parvenir. Mon OAC est la suivante

 Criteria criteria = session.createCriteria(Issue.class); 
    criteria.setFirstResult(from); 
    criteria.setMaxResults(size); 
    criteria.setFetchMode("Issue.issueTracker",FetchMode.JOIN); 
    criteria.add(Restrictions.eq("status", "Escalate To")); 
     return criteria.list(); 

Issue.java

public class Issue implements Serializable 
     { 
     private Integer issue_id; 
     private String issue_description; 
     private Date issue_raised_date; 
     private Set<Issue_Tracker> issueTracker = new HashSet<Issue_Tracker>(0); 



     @OneToMany(fetch=FetchType.LAZY, mappedBy="issue_id") 
     public Set<Issue_Tracker> getIssueTracker() { 
     return issueTracker; 
    } 

     public void setIssueTracker(Set<Issue_Tracker> issueTracker) { 
     this.issueTracker = issueTracker; 

Issue_Tracker.java

public class Issue_Tracker implements Serializable 
{ 
    private Integer issue_id; 
    private String tracker_status; 
    private Timestamp tracked_time; 

J'espère que vous les gars pouvez obtenir ce que je suis en train de demander, tout Aidez-moi?

Répondre

2

Ajoutez une annotation @OrderBy à la collection mappée. Cela devrait retourner les entités dans l'ensemble ordonné par l'heure suivie. La première entité de l'ensemble devrait être la dernière.

//Issue.java 
    @OneToMany(fetch=FetchType.LAZY, mappedBy="issue_id") 
    @OrderBy("tracked_time DESC") 
    public Set<Issue_Tracker> getIssueTracker() { 
    return issueTracker; 

Vous pouvez également essayer:

Criteria criteria = session.createCriteria(Issue.class); 
criteria.setFirstResult(from); 
criteria.setMaxResults(size); 
criteria.setFetchMode("Issue.issueTracker",FetchMode.JOIN); 
criteria.add(Restrictions.eq("status", "Escalate To")); 
Criteria subCriteria = criteria.createCriteria("issueTracker"); 
subCriteria.addOrder(Order.desc("tracked_time")); 
return criteria.list(); 
+0

merci, mais ne fonctionne pas obtenir ce java.lang.ClassNotFoundException d'erreur: antlr.TokenStream –

+0

Un fichier jar dans manquant dans les bibliothèques de l'application: http://www.findjar.com/class/antlr/TokenStream.html –

+0

ok, je vais ad ce pot à mon classpath –

Questions connexes