diff --git a/src/main/java/entity/BegInfo.java b/src/main/java/entity/BegInfo.java
index fe3174d..405e352 100644
--- a/src/main/java/entity/BegInfo.java
+++ b/src/main/java/entity/BegInfo.java
@@ -27,5 +27,5 @@
     public Date endtime;
 
     @Column(name = "has_match", nullable = false)
-    public boolean hasseed;
+    public int hasseed;
 }
diff --git a/src/main/java/entity/SubmitSeed.java b/src/main/java/entity/SubmitSeed.java
index 2cec77d..98986d0 100644
--- a/src/main/java/entity/SubmitSeed.java
+++ b/src/main/java/entity/SubmitSeed.java
@@ -7,28 +7,23 @@
 public class SubmitSeed {
 
     @EmbeddedId
-    private SubmitSeedId id;
+    @AttributeOverrides({
+            @AttributeOverride(name = "begId", column = @Column(name = "beg_id")),
+            @AttributeOverride(name = "seedId", column = @Column(name = "seed_id"))
+    })
+    public SubmitSeedId id;
 
     @ManyToOne(optional = false)
-    @JoinColumn(name = "beg_id", referencedColumnName = "beg_id", foreignKey = @ForeignKey(name = "fk_ss_beg"))
-    private BegInfo begInfo;
+    @JoinColumn(name = "beg_id", referencedColumnName = "beg_id", foreignKey = @ForeignKey(name = "fk_ss_beg"), insertable = false, updatable = false)
+    public BegInfo begInfo;
 
     @ManyToOne(optional = false)
-    @JoinColumn(name = "seed_id", referencedColumnName = "seed_id", foreignKey = @ForeignKey(name = "fk_ss_seed"))
-    private Seed seed;
+    @JoinColumn(name = "seed_id", referencedColumnName = "seed_id", foreignKey = @ForeignKey(name = "fk_ss_seed"), insertable = false, updatable = false)
+    public Seed seed;
 
     @Column(name = "votes", nullable = false)
-    private int votes;
+    public int votes;
 
-    public SubmitSeed() {}
-
-    public SubmitSeedId getId() {
-        return id;
+    public SubmitSeed() {
     }
-
-    public void setId(SubmitSeedId id) {
-        this.id = id;
-    }
-
-    // getters and setters for begInfo, seed, and votes
-}
+}
\ No newline at end of file
diff --git a/src/main/java/entity/User.java b/src/main/java/entity/User.java
index 6cdafb8..8bc67ae 100644
--- a/src/main/java/entity/User.java
+++ b/src/main/java/entity/User.java
@@ -33,7 +33,7 @@
     public int detectedCount = 0;
 
     @Temporal(TemporalType.TIMESTAMP)
-    @Column(name = "lastDetectedTime",nullable = false)
+    @Column(name = "lastDetectedTime", nullable = false)
     public Date lastDetectedTime = new Date();
 
     @Column(name = "fake_detected_count", nullable = false)
diff --git a/src/main/java/entity/UserVotes.java b/src/main/java/entity/UserVotes.java
index af28e3c..ba7d950 100644
--- a/src/main/java/entity/UserVotes.java
+++ b/src/main/java/entity/UserVotes.java
@@ -8,37 +8,29 @@
 public class UserVotes {
 
     @EmbeddedId
-    private UserVotesId id;
+    @AttributeOverrides({
+            @AttributeOverride(name = "userId", column = @Column(name = "user_id")),
+            @AttributeOverride(name = "begId", column = @Column(name = "beg_id")),
+            @AttributeOverride(name = "seedId", column = @Column(name = "seed_id"))
+    })
+    public UserVotesId id;
 
     @ManyToOne(optional = false)
-    @JoinColumn(name = "user_id", referencedColumnName = "user_id", 
-                foreignKey = @ForeignKey(name = "fk_user_votes_user"))
-    private User user;
+    @JoinColumn(name = "user_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_user_votes_user"), insertable = false, updatable = false)
+    public User user;
 
     @ManyToOne(optional = false)
-    @JoinColumn(name = "beg_id", referencedColumnName = "beg_id", 
-                foreignKey = @ForeignKey(name = "fk_user_votes_beg"))
-    private BegInfo begInfo;
+    @JoinColumn(name = "beg_id", referencedColumnName = "beg_id", foreignKey = @ForeignKey(name = "fk_user_votes_beg"), insertable = false, updatable = false)
+    public BegInfo begInfo;
 
     @ManyToOne(optional = false)
-    @JoinColumn(name = "seed_id", referencedColumnName = "seed_id", 
-                foreignKey = @ForeignKey(name = "fk_user_votes_seed"))
-    private Seed seed;
+    @JoinColumn(name = "seed_id", referencedColumnName = "seed_id", foreignKey = @ForeignKey(name = "fk_user_votes_seed"), insertable = false, updatable = false)
+    public Seed seed;
 
     @Column(name = "created_at", nullable = false)
     @Temporal(TemporalType.TIMESTAMP)
-    private Date createdAt;
+    public Date createdAt;
 
-    public UserVotes() {}
-
-    // getter and setter for the composite key and other fields
-    public UserVotesId getId() {
-        return id;
+    public UserVotes() {
     }
-
-    public void setId(UserVotesId id) {
-        this.id = id;
-    }
-
-    // getters and setters for user, begInfo, seed, createdAt
-}
+}
\ No newline at end of file
