现在的位置: 首页 > 综合 > 正文

play framework学习笔记之Model类的使用及JPA entity manager

2013年10月25日 ⁄ 综合 ⁄ 共 1978字 ⁄ 字号 评论关闭

play framework 提供了很多实用的方法。

 

 

 

When the JPA entity manager is started you can get it from the application code, using the JPA helper. For example:

使用jpa 实体管理类


public static index() {
    Query query = JPA.em().createQuery("select * from Article");
    List<Article> articles = query.getResultList();
    render(articles);
}

play框架会自动为你每次request和response建立事务。

Play will automatically manage transactions for you. It will start a transaction for each HTTP request and commit it when the HTTP response is sent. If your code throws an exception, the transaction will automatically rollback.

If you need to force transaction rollback from the application code, you can use theJPA.setRollbackOnly() method.

 

 

The play.db.jpa.Model gives you several ways to find data. For example:

Find by ID 按ID获取

The simplest way to find an object.

Post aPost = Post.findById(5L); 这些其实都是Model的静态方法

Find all 获取全部all() 此外.from(xx)和.fetch(xx)可用去分页,支持链式调用.

List<Post> posts = Post.findAll();

This is the simplest way to retrieve all posts, but you can do the same using:

List<Post> posts = Post.all().fetch();

This allows you to paginate results:

List<Post> posts = Post.all().fetch(100); // 100 max posts

or even,

List<Post> posts = Post.all().from(50).fetch(100); // 100 max posts start at 50

Find using a simplified query 使用find()方法获取

That allows you to create very expressive finders, but will only work for simple queries.

Post.find("byTitle", "My first post").fetch();
Post.find("byTitleLike", "%hello%").fetch();
Post.find("byAuthorIsNull").fetch();
Post.find("byTitleLikeAndAuthor", "%hello%", connectedUser).fetch();

Find using a JPQL query

You can use a JPQL query:

Post.find(
    "select p from Post p, Comment c where c.post = p and c.subject like ?", "%hop%"
);

or even a part of:

Post.find("title", "My first post").fetch();
Post.find("title like ?", "%hello%").fetch();
Post.find("author is null").fetch();
Post.find("title like % and author is null", "%hello%").fetch();
Post.find("title like % and author is null order by postDate", "%hello%").fetch();

You can even specify only the order by statement:

Post.find("order by postDate desc").fetch();

You can easily count objects.

long postCount = Post.count();

Or even count using a query:

long userPostCount = Post.count("author = ?", connectedUser);



 

 

 

 

抱歉!评论已关闭.