diff --git a/src/main/java/database/DataManagerInterface.java b/src/main/java/database/DataManagerInterface.java
index f8d0940..d284288 100644
--- a/src/main/java/database/DataManagerInterface.java
+++ b/src/main/java/database/DataManagerInterface.java
@@ -1,12 +1,12 @@
 package database;
 
+import object.BegInfo;
+import object.Notice;
+import object.Post;
+import object.Profile;
 import object.Seed;
 import object.User;
 import object.UserPT;
-import object.Notice;
-import object.BegInfo;
-import object.Post;
-import object.Profile;
 public interface DataManagerInterface{
 //DB1
 
@@ -39,10 +39,10 @@
 // ----------------------------------------------------------------------------------------------------
 
 //DB2
-    public boolean AddBegSeed(BegInfo info);//添加一个新的求种信息，返回状态：0 success，1 重复，2其他原因
-    public boolean UpdateBegSeed(BegInfo info);//更新一个求种信息，返回状态：0 success，1 重复，2其他原因
-    public boolean DeleteBegSeed(String begid);//删除一个求种信息，返回状态：0 success，1 重复，2其他原因
-    public boolean VoteSeed(String begid,String userid,boolean vote);//投票，返回状态：0 success，1 重复，2其他原因,vote=true表示赞成，vote=false表示反对
+    public int AddBegSeed(BegInfo info);//添加一个新的求种信息，返回状态：0 success，1 重复，2其他原因
+    public int UpdateBegSeed(BegInfo info);//更新一个求种信息，返回状态：0 success，1 重复，2其他原因
+    public int DeleteBegSeed(String begid);//删除一个求种信息，返回状态：0 success，1 重复，2其他原因
+    public int VoteSeed(String begId, String seedId, String userId);//求种结果投票，返回状态：0 success，1 重复，2其他原因
     public int SubmitSeed(String begid,Seed seed);//提交种子，返回状态：0 success，1 重复，2其他原因
     public void SettleBeg();//结算所有求种信息，求种信息中需要增加Beg截止日期，默认14天，期间投票>的则Beg成功，否则Beg失败，并发放对应奖励
 
@@ -50,7 +50,7 @@
     public int UpdatePost(Post post);//更新一个帖子，返回状态：0 success，1 不存在,2其他原因
     public int DeletePost(String postid);//删除一个帖子，返回状态：0 success，1 不存在,2其他原因
 
-    public int AddComment(String postid,String comment);//添加一个评论，返回状态：0 success，1 不存在，2其他原因
+    public int AddComment(String postid, String userid, String comment);//添加一个评论，返回状态：0 success，1 不存在，2其他原因
     public int DeleteComment(String postid,String commentid);//删除一个评论，返回状态：0 success，1 不存在,2其他原因
 
     
diff --git a/src/main/java/object/PostReply.java b/src/main/java/object/PostReply.java
new file mode 100644
index 0000000..bc95625
--- /dev/null
+++ b/src/main/java/object/PostReply.java
@@ -0,0 +1,38 @@
+package object;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PostReply")
+public class PostReply {
+    @Id
+    @Column(name = "reply_id", length = 64, nullable = false)
+    public String replyid;
+
+    @Column(name = "post_id", length = 64, nullable = false)
+    public String postid;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "post_id", referencedColumnName = "post_id", 
+                foreignKey = @ForeignKey(name = "fk_pr_post"), 
+                insertable = false, updatable = false)
+    public Post post;
+
+    @Column(name = "author_id", length = 36, nullable = false)
+    public String authorid;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "author_id", referencedColumnName = "user_id", 
+                foreignKey = @ForeignKey(name = "fk_pr_user"), 
+                insertable = false, updatable = false)
+    public User author;
+
+    @Lob
+    @Column(name = "content", nullable = false)
+    public String content;
+
+    @Column(name = "created_at", nullable = false)
+    @Temporal(TemporalType.TIMESTAMP)
+    public Date createdAt;
+}
\ No newline at end of file
