你的位置:首页 > Java教程

[Java教程]Play Framework 完整实现一个APP(三)


 

 1.添加Post类

package models;import java.util.*;import javax.persistence.*;import play.db.jpa.*;@Entity@Table(name = "blog_post")public class Post extends Model {	public String title;	public Date postedAt;	@Lob	public String content;	@ManyToOne	public User author;	public Post(User author, String title, String content) {		this.author = author;		this.title = title;		this.content = title;	}}

@Lob 标识,字段是一个large text的类型,@ManyToOne 标识每个Post只能对应一个User,一个User可以对应多个Post

 

2. 添加测试用例

    @Test	public void createPost() {		// Create a new user and save it		User user = new User("bob@gmail.com", "####", "Bob").save();		// Create a new post		new Post(user, "My first post", "Hello world").save();		// Test that the post has been created		assertEquals(1, Post.count());		// Retrieve all posts created by user		List<Post> posts = Post.find("byAuthor", user).fetch();		// Tests		assertEquals(1, posts.size());		Post firstPost = posts.get(0);		assertNotNull(firstPost);		assertEquals(user, firstPost.author);		assertEquals("My first post", firstPost.title);		assertEquals("Hello world", firstPost.content);		assertNotNull(firstPost.postedAt);	}  

  

3.添加Comment类

@Entitypublic class Comment extends Model {	public String author;	public Date postedAt;	@Lob	public String content;	@ManyToOne	public Post post;	public Comment(Post post, String author, String content) {		this.post = post;		this.author = author;		this.content = content;		this.postedAt = new Date();	}}

  

4.添加测试用例

@Testpublic void postComments() {  // Create a new user and save it  User bob = new User("bob@gmail.com", "secret", "Bob").save();   // Create a new post  Post bobPost = new Post(bob, "My first post", "Hello world").save();   // Post a first comment  new Comment(bobPost, "Jeff", "Nice post").save();  new Comment(bobPost, "Tom", "I knew that !").save();   // Retrieve all comments  List<Comment> bobPostComments = Comment.find("byPost", bobPost).fetch();   // Tests  assertEquals(2, bobPostComments.size());   Comment firstComment = bobPostComments.get(0);  assertNotNull(firstComment);  assertEquals("Jeff", firstComment.author);  assertEquals("Nice post", firstComment.content);  assertNotNull(firstComment.postedAt);   Comment secondComment = bobPostComments.get(1);  assertNotNull(secondComment);  assertEquals("Tom", secondComment.author);  assertEquals("I knew that !", secondComment.content);  assertNotNull(secondComment.postedAt);}

  

5.在Post类中添加Comment

@OneToMany(mappedBy="post", cascade=CascadeType.ALL)public List<Comment> comments;	public Post(User author, String title, String content) {	this.comments = new ArrayList<Comment>();	this.author = author;	this.title = title;	this.content = title;	this.postedAt = new Date();}

  

6.在Post类中添加方法

public Post addComment(String author, String content) {  Comment newComment = new Comment(this, author, content).save();  this.comments.add(newComment);  this.save();  return this;}

  

7.添加测试用例

@Testpublic void useTheCommentsRelation() {  // Create a new user and save it  User bob = new User("bob@gmail.com", "secret", "Bob").save();   // Create a new post  Post bobPost = new Post(bob, "My first post", "Hello world").save();   // Post a first comment  bobPost.addComment("Jeff", "Nice post");  bobPost.addComment("Tom", "I knew that !");   // Count things  assertEquals(1, User.count());  assertEquals(1, Post.count());  assertEquals(2, Comment.count());   // Retrieve Bob's post  bobPost = Post.find("byAuthor", bob).first();  assertNotNull(bobPost);   // Navigate to comments  assertEquals(2, bobPost.comments.size());  assertEquals("Jeff", bobPost.comments.get(0).author);    // Delete the post  bobPost.delete();    // Check that all comments have been deleted  assertEquals(1, User.count());  assertEquals(0, Post.count());  assertEquals(0, Comment.count());}

  

 

运行Test,如有异常会出现下方提示

 

 

 

.