Home >Java >javaTutorial >PlayFramework completely implements an APP (3)

PlayFramework completely implements an APP (3)

黄舟
黄舟Original
2016-12-23 16:37:511264browse

1. Add Post class

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 identifier, the field is a large text type, @ManyToOne identifier can only be used for each Post Corresponds to one User, and one User can correspond to multiple Posts

2. Add test cases

@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 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. Add Comment class

@Entity
public 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. Add test cases

@Test
public 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 bobPostComments = Comment.find("byPost ", bobpost) .Fetch ();

// tests
assertequals (2, bobpostComments.size ()); rstComment);
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. Add Comment

@OneToMany( mappedBy="post", cascade=CascadeType.ALL)

public List comments;

public Post(User author, String title, String content) {
this.comments = new ArrayList();
this .author = author;
this.title = title;
this.content = title;
this.postedAt = new Date();
}


 

6. Add a method to the Post class

public Post addComment( String author, String content) {

Comment newComment = new Comment(this, author, content).save();

this.comments.add(newComment);

this.save();
return this;
}


 

7. Add test cases

@Test
public 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,如有异常会出现下方提示

PlayFramework completely implements an APP (3)

 以上就是PlayFramework完整实现一个APP(三)的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn