diff --git a/src/main/java/object/Appeal.java b/src/main/java/object/Appeal.java
index 3df37e8..5057179 100644
--- a/src/main/java/object/Appeal.java
+++ b/src/main/java/object/Appeal.java
@@ -1,9 +1,35 @@
 package object;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "Appeal")
 public class Appeal {
+    @Id
+    @Column(name = "appeal_id", length = 64, nullable = false)
     public String appealid;
+
+    @Column(name = "user_id", length = 36, nullable = false)
     public String appealuserid;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "user_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_appeal_user"), insertable = false, updatable = false)
+    public User user;
+
+    @Lob
+    @Column(name = "content", nullable = false)
     public String content;
+
+    @Column(name = "file_url", length = 255)
     public String fileURL;
+
+    @Column(name = "status", nullable = false)
     public int state; // 0: pending, 1: approved, 2: rejected
 }
diff --git a/src/main/java/object/BegInfo.java b/src/main/java/object/BegInfo.java
index 1ac6bf5..4c3589a 100644
--- a/src/main/java/object/BegInfo.java
+++ b/src/main/java/object/BegInfo.java
@@ -1,9 +1,31 @@
 package object;
 
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Table(name = "BegSeed")
 public class BegInfo {
+    @Id
+    @Column(name = "beg_id", length = 64, nullable = false)
     public String begid;
+
+    @Column(name = "beg_count", nullable = false)
     public int begnumbers;
+
+    @Column(name = "reward_magic", nullable = false)
     public int magic;
-    public String endtime;
+
+    @Column(name = "deadline", nullable = false)
+    @Temporal(TemporalType.TIMESTAMP)
+    public Date endtime;
+
+    @Column(name = "has_match", nullable = false)
     public boolean hasseed;
 }
diff --git a/src/main/java/object/Notice.java b/src/main/java/object/Notice.java
index 244eee1..a0b2b11 100644
--- a/src/main/java/object/Notice.java
+++ b/src/main/java/object/Notice.java
@@ -1,8 +1,25 @@
 package object;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "Announcement")
 public class Notice {
+    @Id
+    @Column(name = "announce_id", length = 64, nullable = false)
     public String noticeid;
+
+    @Lob
+    @Column(name = "content", nullable = false)
     public String noticecontent;
+
+    @Column(name = "is_public", nullable = false)
     public boolean state;
+
+    @Column(name = "tag", length = 100)
     public String posttag;
 }
diff --git a/src/main/java/object/Post.java b/src/main/java/object/Post.java
index 84f9757..463e242 100644
--- a/src/main/java/object/Post.java
+++ b/src/main/java/object/Post.java
@@ -1,11 +1,46 @@
 package object;
 
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Table(name = "Post")
 public class Post {
+    @Id
+    @Column(name = "post_id", length = 64, nullable = false)
     public String postid;
+
+    @Column(name = "title", length = 255, nullable = false)
     public String posttitle;
+
+    @Lob
+    @Column(name = "content", nullable = false)
     public String postcontent;
+
+    @Column(name = "author_id", length = 36, nullable = false)
     public String postuserid;
-    public String posttime;
-    public String replytime;
-    public String readtime;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "author_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_post_user"), insertable = false, updatable = false)
+    public User author;
+
+    @Column(name = "created_at", nullable = false)
+    @Temporal(TemporalType.TIMESTAMP)
+    public Date posttime;
+
+    @Column(name = "reply_count", nullable = false)
+    public int replytime;
+
+    @Column(name = "view_count", nullable = false)
+    public int readtime;
 }
diff --git a/src/main/java/object/Profile.java b/src/main/java/object/Profile.java
index a33e7cd..c8469a9 100644
--- a/src/main/java/object/Profile.java
+++ b/src/main/java/object/Profile.java
@@ -1,13 +1,46 @@
 package object;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+@Entity
+@Table(name = "UserMigration")
 public class Profile {//迁移信息
+    @Id
+    @Column(name = "migration_id", length = 64, nullable = false)
     public String profileurl;
+
+    @Column(name = "user_id", length = 36, nullable = false)
     public String userid;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "user_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_um_user"), insertable = false, updatable = false)
+    public User user;
+
+    @Column(name = "approved", nullable = false)
     public boolean exampass;
+
+    @Column(name = "pending_magic", nullable = false)
     public String magictogive;
+
+    @Column(name = "pending_uploaded", nullable = false)
     public String uploadtogive;
+
+    @Transient
     public String downloadtogive;
+
+    @Column(name = "granted_magic", nullable = false)
     public String magicgived;
+
+    @Column(name = "granted_uploaded", nullable = false)
     public String uploadgived;
+
+    @Transient
     public String downloadgived;
 }
diff --git a/src/main/java/object/Seed.java b/src/main/java/object/Seed.java
index b353f46..b4f4c16 100644
--- a/src/main/java/object/Seed.java
+++ b/src/main/java/object/Seed.java
@@ -1,13 +1,53 @@
 package object;
 
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Table(name = "Seed")
 public class Seed {
+    @Id
+    @Column(name = "seed_id", length = 64, nullable = false)
     public String seedid;
+
+    @Column(name = "owner_user_id", length = 36, nullable = false)
     public String seeduserid;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "owner_user_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_seed_user"), insertable = false, updatable = false)
+    public User user;
+
+    @Column(name = "fake_hits", nullable = false)
     public int faketime;
+
+    @Column(name = "last_fake_check")
+    @Temporal(TemporalType.TIMESTAMP)
+    public Date lastfakecheck;
+
+    @Column(name = "external_url")
     public String outurl;
+
+    @Column(name = "title", length = 255, nullable = false)
     public String title;
+
+    @Column(name = "subtitle", length = 255)
     public String subtitle;
+
+    @Column(name = "size", length = 50, nullable = false)
     public String seedsize;
+
+    @Column(name = "tags")
     public String seedtag;
+
+    @Column(name = "popularity", nullable = false)
     public int downloadtimes;
 }
diff --git a/src/main/java/object/TransRecord.java b/src/main/java/object/TransRecord.java
index e32dce2..7f1c800 100644
--- a/src/main/java/object/TransRecord.java
+++ b/src/main/java/object/TransRecord.java
@@ -1,12 +1,54 @@
 package object;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "Transport")
+@IdClass(TransportId.class)
 public class TransRecord{
+    @Id
+    @Column(name = "task_id", length = 64, nullable = false)
     public String taskid;
+
+    @Id
+    @Column(name = "uploader_id", length = 36, nullable = false)
     public String uploaduserid;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "uploader_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_tr_user_up"), insertable = false, updatable = false)
+    public User uploader;
+
+    @Id
+    @Column(name = "downloader_id", length = 36, nullable = false)
     public String downloaduserid;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "downloader_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_tr_user_down"), insertable = false, updatable = false)
+    public User downloader;
+
+    @Column(name = "seed_id", length = 64, nullable = false)
     public String seedid;
-    public int upload;
-    public int download;
-    public int maxupload;
-    public int maxdownload;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "seed_id", referencedColumnName = "seed_id", foreignKey = @ForeignKey(name = "fk_tr_seed"), insertable = false, updatable = false)
+    public Seed seed;
+
+    @Column(name = "uploaded", nullable = false)
+    public long upload;
+
+    @Column(name = "downloaded", nullable = false)
+    public long download;
+
+    @Column(name = "upload_peak", nullable = false)
+    public long maxupload;
+
+    @Column(name = "download_peak", nullable = false)
+    public long maxdownload;
 }
\ No newline at end of file
diff --git a/src/main/java/object/TransportId.java b/src/main/java/object/TransportId.java
new file mode 100644
index 0000000..8e102d3
--- /dev/null
+++ b/src/main/java/object/TransportId.java
@@ -0,0 +1,38 @@
+package object;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class TransportId implements Serializable {
+    private String taskid;
+    private String uploaduserid;
+    private String downloaduserid;
+
+    public TransportId() {}
+
+    public TransportId(String taskid, String uploaduserid, String downloaduserid) {
+        this.taskid = taskid;
+        this.uploaduserid = uploaduserid;
+        this.downloaduserid = downloaduserid;
+    }
+
+    public String getTaskid() { return taskid; }
+    public void setTaskid(String taskid) { this.taskid = taskid; }
+    public String getUploaduserid() { return uploaduserid; }
+    public void setUploaduserid(String uploaduserid) { this.uploaduserid = uploaduserid; }
+    public String getDownloaduserid() { return downloaduserid; }
+    public void setDownloaduserid(String downloaduserid) { this.downloaduserid = downloaduserid; }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        TransportId that = (TransportId) o;
+        return Objects.equals(taskid, that.taskid) && Objects.equals(uploaduserid, that.uploaduserid) && Objects.equals(downloaduserid, that.downloaduserid);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(taskid, uploaduserid, downloaduserid);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/object/User.java b/src/main/java/object/User.java
index b9d72a1..5e8dfaa 100644
--- a/src/main/java/object/User.java
+++ b/src/main/java/object/User.java
@@ -1,15 +1,43 @@
 package object;
 
+import javax.persistence.*;
+
+@Entity
+@Table(name = "User", uniqueConstraints = @UniqueConstraint(name = "uniq_email", columnNames = {"email"}))
+@IdClass(UserId.class)
 public class User {
+    @Id
+    @Column(name = "user_id", length = 36, nullable = false)
     public String userid;
+
+    @Column(name = "username", length = 100, nullable = false)
     public String username;
+
+    @Column(name = "password", length = 255, nullable = false)
     public String password;
+
+    @Column(name = "gender", nullable = false)
     public String sex;
+
+    @Transient
     public String age;
+
+    @Id
+    @Column(name = "email", length = 255, nullable = false)
     public String email;
+
+    @Column(name = "school")
     public String school;
+
+    @Column(name = "avatar_url")
     public String pictureurl;
+
+    @Column(name = "bio")
     public String profile;
+
+    @Column(name = "account_status", nullable = false)
     public boolean accountstate;
+
+    @Column(name = "invite_left", nullable = false)
     public int invitetimes;
 }
diff --git a/src/main/java/object/UserId.java b/src/main/java/object/UserId.java
new file mode 100644
index 0000000..c68ce68
--- /dev/null
+++ b/src/main/java/object/UserId.java
@@ -0,0 +1,36 @@
+package object;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class UserId implements Serializable {
+    private String userid;
+    private String email;
+
+    public UserId() {}
+
+    public UserId(String userid, String email) {
+        this.userid = userid;
+        this.email = email;
+    }
+
+    // getters and setters
+    public String getUserid() { return userid; }
+    public void setUserid(String userid) { this.userid = userid; }
+
+    public String getEmail() { return email; }
+    public void setEmail(String email) { this.email = email; }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        UserId userId = (UserId) o;
+        return Objects.equals(userid, userId.userid) && Objects.equals(email, userId.email);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(userid, email);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/object/UserPT.java b/src/main/java/object/UserPT.java
index 0332640..db3703f 100644
--- a/src/main/java/object/UserPT.java
+++ b/src/main/java/object/UserPT.java
@@ -1,11 +1,41 @@
 package object;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.MapsId;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "UserPT")
 public class UserPT {
+    @Id
+    @Column(name = "user_id", length = 36, nullable = false)
     public String userid;
+
+    @OneToOne(optional = false)
+    @MapsId
+    @JoinColumn(name = "user_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_pt_user"))
+    public User user;
+
+    @Column(name = "magic", nullable = false)
     public int magic;
-    public int upload;
-    public int download;
+
+    @Column(name = "uploaded", nullable = false)
+    public long upload;
+
+    @Column(name = "downloaded", nullable = false)
+    public long download;
+
+    @Column(name = "ratio", nullable = false, precision = 5, scale = 2)
     public double share;
+
+    @Column(name = "default_seed_path")
     public String farmurl;
-    public String viptime;
+
+    @Column(name = "vip_downloads", nullable = false)
+    public int viptime;
 }
