ホームページ >Java >&#&チュートリアル >PlayFramework は APP を完全に実装します (3)
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
// テスト
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(三)の内容,更多相关内容请关注PHP中文网(www.php.cn)!