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
// 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
// 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);
}
public List
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();
}
Comment newComment = new Comment(this, author, content).save();
this.comments.add(newComment); this.save();
return this;
}
@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完整实现一个APP(三)的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!