rebase and resubmit

Change-Id: I840888ad5aadceaacb5cd64c6472614cd82ffe17
diff --git a/src/main/java/entity/User.java b/src/main/java/entity/User.java
new file mode 100644
index 0000000..603ec85
--- /dev/null
+++ b/src/main/java/entity/User.java
@@ -0,0 +1,57 @@
+package entity;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import com.querydsl.core.annotations.QueryEntity;
+
+@QueryEntity
+@Entity(name="User")
+@Table(name = "User")
+public class User {
+    @Id
+    @Column(name = "user_id", length = 36, nullable = false)
+    private String userid;
+
+    @Column(name = "email", nullable = false, length = 255, unique = true)
+    private String email;
+
+    @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;
+
+    @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;
+
+    @OneToOne(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
+    public UserPT userPT;
+
+    // Constructors, getters, setters
+    public User() {}
+}