1. Post 클래스 추가
패키지 모델,
import java.util.*;
import javax.persistence.*;
import play.db.jpa. *;
@Entity
@Table(name = "blog_post")
public class Post 확장 모델 {
public String title;
public Date listedAt;
@Lob
public String content;
@ManyToOne
public User 작성자;
public Post(사용자 작성자, 문자열 제목, 문자열 콘텐츠) {
this.author = 작성자;
this.title = title;
this.content = title;
}
}
@Lob 식별자, 필드는 큰 텍스트 유형입니다. @ManyToOne은 각 게시물이 한 명의 사용자에만 해당할 수 있고 한 명의 사용자가 여러 게시물에 해당할 수 있음을 식별합니다.
2. 테스트 케이스 추가
@Test
공개 void createPost () {
// 새로운 사용자를 생성하고 저장합니다
User user = new User("bob@Gmail.com", "####", "Bob").save();
// 새 게시물 만들기
new Post(user, "My first post", "Hello world").save();
// 게시물이 작성되었는지 테스트 created
주장Equals(1, Post.count());
// 사용자가 작성한 모든 게시물 검색
List
// 테스트
ertEquals(1,posts.size());
PostfirstPost=posts.get(0);
assertNotNull(firstPost);
주장Equals( user, firstPost.author);
주장Equals("내 첫 게시물", firstPost.title);
주장Equals("Hello world", firstPost.content);
주장NotNull(firstPost.postedAt);
}
3. 코멘트 클래스 추가
@Entity
public 클래스 Comment 확장 모델 {
public String 작성자 ;
공개 게시 날짜;
@Lob
public String content;
@ManyToOne
공개 게시물 게시물;
공개 댓글(게시물, 문자열 작성자, 문자열 내용) {
this.post = post;
this.author = 작성자;
this.content = content;
this.postedAt = new Date();
}
}
4. 테스트 케이스 추가
@Test
public void postComments() {
// 새로운 사용자 생성 그리고 저장하세요
User bob = new User("bob@gmail.com", "secret", "Bob").save();
// 새 게시물 만들기
Post bobPost = new Post(bob, "My first post", "Hello world").save();
// 첫 댓글 게시
new Comment(bobPost, "Jeff", "Nice post" ).save();
new Comment(bobPost, "Tom", "I Know that !").save();
// 모든 댓글 검색
List
// 테스트
ertEquals(2, bobPostComments.size());
댓글 firstComment = bobPostComments.get (0 );
ertNotNull(firstComment);
assertEquals("Jeff",firstComment.author);
assertEquals("좋은 게시물", firstComment.content);
assertNotNull(firstComment.postedAt) ;
댓글 secondComment = bobPostComments.get(1);
ertNotNull(secondComment);
assertEquals("Tom", secondComment.author);
assertEquals("알고 있었어!" , secondComment .content);
ertNotNull(secondComment.postedAt);
}
5. 댓글 추가
@OneToMany( mappedBy= "post", cascade=CascadeType.ALL)
공개 목록
공개 게시물(사용자 작성자, 문자열 제목, 문자열 내용) {
this.comments = new ArrayList< ;Comment> ;();
this.author = 작성자;
this.title = 제목;
this.content = 제목;
this.postedAt = new Date();
}
6. Post 클래스에 메소드 추가
public Post addComment(String 작성자, String 내용) {
Comment newComment = new Comment(this, 작성자, 내용 ).save();
this.comments.add(newComment);
this.save();
return this;
}
7. 테스트 케이스 추가
@Test
public void useTheCommentsRelation() {
// 새 사용자를 생성하고 저장
User bob = new User("bob@gmail.com", "secret", "Bob" ).save();
// 새 게시물 만들기
Post bobPost = new Post(bob, "My first post", "Hello world").save();
// 첫 번째 댓글 게시
bobPost.addComment("Jeff", "Nice post");
bobPost.addComment("Tom", "그럴 줄 알았어 !");
/ / 개수 계산
assertEquals(1, User.count());
assertEquals(1, Post.count());
assertEquals(2, Comment.count());
// Bob의 게시물 검색
bobPost = Post.find("byAuthor", bob).first();
assertNotNull(bobPost);
// 댓글로 이동
assertEquals( 2, bobPost.comments.size());
assertEquals("Jeff", bobPost.comments.get(0).author);
// 게시물 삭제
bobPost.delete( );
// 모든 댓글이 삭제되었는지 확인
assertEquals(1, User.count());
assertEquals(0, Post.count());
assertEquals( 0, Comment.count());
}
运行Test,如有异常会take现下方提示
以上就是PlayFramework完整实现一个APP(三)的内容,更多敳关容请关注PHP中文网(www.php.cn)!