ホームページ  >  記事  >  Java  >  PlayFramework は APP を完全に実装します (3)

PlayFramework は APP を完全に実装します (3)

黄舟
黄舟オリジナル
2016-12-23 16:37:511243ブラウズ

1. Post クラスを追加します

パッケージ モデル;

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 識別子、フィールドはラージ テキスト タイプ、@ManyToOne 識別子は次の目的でのみ使用できます。各投稿は 1 人のユーザーに対応し、1 人のユーザーは複数の投稿に対応できます

2. テストケースを追加します

@Test
public void createPost() {
// 新しいユーザーを作成して保存します
ユーザー user = new User("bob @Gmail.com", "####", "Bob").save();

// 新しい投稿を作成します
new Post(user, "My first post", "Hello world" ).save( );

// 投稿が作成されたことをテストします
assertEquals(1, Post.count());

// ユーザーが作成したすべての投稿を取得します
List
// テスト
assertEquals(1,posts.size());
投稿firstPost =posts.get(0);
assertNotNull(firstPost);
assertEquals(user, firstPost.author) ;
assertEquals("初めての投稿", firstPost.title);
assertEquals("Hello world", firstPost.content);
assertNotNull(firstPost.postedAt);
}

3.コメントの追加 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. 追加します。テストケース

@Test
public void postComments() {
// 新しいユーザーを作成して保存します
User bob = new User("bob@gmail.com", "secret", "Bob").save() ;

// 新しい投稿を作成します
投稿 bobPost = new Post(bob, "最初の投稿", "Hello world").save();

// 最初のコメントを投稿します
new Comment(bobPost, "Jeff ", "素敵な投稿").save();
new Comment(bobPost, "トム", "それは知っていました!").save();

// すべてのコメントを取得します
List bobPostComments = コメント。 find("byPost ", bobpost) .Fetch ();

// テスト
Assertequals ("jeff" , firstComment.author);
assertEquals("Nice post", firstComment.content);
assertNotNull(firstComment.postedAt);

コメント SecondComment = bobPostComments.get(1);
assertNotNull(secondComment);
assertEquals ("Tom ", SecondComment.author);
assertEquals("それは知っていました!", SecondComment.content);
assertNotNull(SecondComment.postedAt);
}




5. コメントを追加

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

public List< ;コメント> コメント;

公開投稿(ユーザー作成者、文字列タイトル、文字列コンテンツ) {

this.comments = new ArrayList();
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. テストケースを追加します

@Test
public void useTheCommentsRelation() {
// 新しいユーザーを作成して保存します
User bob = new User("bob@gmail.com", "secret", "Bob").save();

// 新しい投稿を作成します
Post bobPost = new Post(bob, "初めての投稿", "Hello world").save();

// 最初のコメントを投稿します
bobPost.addComment("Jeff", "Nice post");
bobPost.addComment("トム", "それは知っていました!");

// 物事を数える
assertEquals(1, User.count());
assertEquals(1, Post.count()) ;
assertEquals(2, Comment.count());

// ボブの投稿を取得します
bobPost = Post.find("byAuthor", bob).first();
assertNotNull(bobPost);

// に移動しますcomments
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());
}

実行テスト,如有常会出现下方示唆

PlayFramework は APP を完全に実装します (3)

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


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。