将entityManager方法与标准播放方法结合起来

时间:2011-03-18 15:39:29

标签: hibernate jpa playframework

我需要从playframework Model类扩展delete()动作,我必须使用EntityManager和nativeQuery。我还没有弄清楚playframework究竟在会话中做了什么(我猜它确实如此),但似乎这个查询在super.delete()之前没有受到影响。有没有人对此有所了解?

@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();
    }

}

我在更新执行查询后尝试执行MyModel.em().flush();,但它没有工作。

1 个答案:

答案 0 :(得分:1)

我们需要查看查询才能知道它可能失败的原因。代码似乎是正确的,所以我会把它归咎于错误的JQL。

那就是说,我建议在方法上使用@PreRemove和@PostRemove注释来启动查询。它使代码更清晰。