2011-12-10 5 views
2

Je viens de lire à propos CRUD système de et a décidé de play framework écrire simple exemple, deux des classes Group et User et a décidé que beaucoup d'utilisateurs peut être dans un groupe, mais un utilisateur peut être juste dans un groupe. Alors, je l'ai utilisé pour elle ManyToOne et OneToMany anotations, s'il vous plaît jeter un oeil au code ci-dessous:play framework: CRUD et triées listes

package models; 

import play.db.jpa.Model; 

import javax.persistence.Entity; 
import javax.persistence.ManyToOne; 

/** 
* @author sergiizagriichuk 
*/ 
@Entity 
public class User extends Model { 
    public String firstName; 
    public String lastName; 

    @ManyToOne 
    public Group group; 

    @Override 
    public String toString() { 
     return firstName; 
    } 
} 

et

package models; 

import play.db.jpa.Model; 

import javax.persistence.Entity; 
import javax.persistence.OneToMany; 
import javax.persistence.OrderBy; 
import java.util.List; 

/** 
* @author sergiizagriichuk 
*/ 
@Entity 
public class Group extends Model { 
    public String groupName; 
    public String groupDescription; 
    @OneToMany 
    @OrderBy("firstName desc") 
    public List<User> users; 

} 

Pour le tri, j'ai essayé d'utiliser l'annotation OrderBy, et comme résultat rien :(, je liste des utilisateurs en mode de tri supplémentaire, mais je veux par ordre firstName, quelqu'un pourrait-il me expliquer comment trier la liste en utilisant le contrôleur pour le match amical en utilisant en mode CRUD? Merci.

Répondre

0

avez-vous essayé d'ajouter l'attribut mappedBy dans votre liste d'utilisateurs?

@OneToMany(mappedBy="group") 
+0

Dans ce cas, la liste des utilisateurs vient d'être supprimée du formulaire d'édition, et ce n'est pas une solution pour moi. –

+0

Je ne suis pas sûr de comprendre le problème, mais en hibernation, vous devez spécifier le propriétaire de la relation. Je ne sais pas non plus si cela fait une différence, mais j'ai toujours vu "DESC" (avec majuscules) – mericano1

+1

Si la liste est vide, c'est parce que vous devez définir le champ du groupe d'utilisateurs avant de l'enregistrer. Si vous n'ajoutez pas l'attribut "mappedBy", hibernate générera une table supplémentaire car il ne sait pas que "users" et "group" sont les deux extrémités de la même relation. – mericano1