2011-03-18 4 views
1

J'ai besoin d'étendre l'action delete() de playframework Classe de modèle et je dois utiliser EntityManager et nativeQuery. Je n'ai pas encore compris ce que playframework fait exactement avec une session (je suppose que c'est le cas), mais il semble que cette requête, avant super.delete(), n'a pas été effectuée. Quelqu'un a-t-il des idées à ce sujet?combiner les méthodes entityManeger avec les méthodes de jeu standard

@Entity 
public class MyModel extends Model { 

    ... 
    @Override 
    public Tag delete() { 

     final Query deleteLinksQuery = Tag.em().createNativeQuery("some query here");   

     int res = deleteLinksQuery.executeUpdate(); 

     // here res=1 i.e. it works but it seems doesn't save to db 

     return super.delete(); 
    } 

} 

J'ai essayé de faire MyModel.em().flush(); après la mise à jour l'exécution de la requête, mais il Has'n travaillé.

Répondre

1

nous aurions besoin de voir la requête pour être en mesure de savoir pourquoi il peut échouer. Le code semble correct, donc je le blâmerais sur le mauvais JQL. Cela dit, je suggère d'utiliser les annotations @PreRemove et @PostRemove sur les méthodes pour lancer la requête. Il garde le code plus propre.

+1

thx pour les méthodes @ PreX. il semble que sql fonctionne bien. j'ai vérifié. c'est un problème de synchronisation d'entité. Je posterai des corrections à cette question plus tard. – ses

Questions connexes