当前位置: 代码迷 >> .NET Framework >> Play Framework 完整实现一个APP(3)
  详细解决方案

Play Framework 完整实现一个APP(3)

热度:265   发布时间:2016-05-01 23:20:10.0
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("[email protected]", "####", "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("[email protected]", "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("[email protected]", "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,如有异常会出现下方提示

 

 

 

.

  相关解决方案