diff --git a/src/main/java/database/DataManagerInterface.java b/src/main/java/database/DataManagerInterface.java
index b92d18d..e737daa 100644
--- a/src/main/java/database/DataManagerInterface.java
+++ b/src/main/java/database/DataManagerInterface.java
@@ -23,7 +23,8 @@
     public int UpdateSeed(Seed seedinfo);//接收新的种子然后更新其全部属性;
 
     public Seed[] SearchSeed(String userQ);//传入搜索的关键词或句子，返回搜索到的种子信息（按照公共字符数量排序）
-    
+    public Seed[] GetSeedListByTag(String tag);//获取某个标签下的种子列表
+
     public int AddNotice(Notice notice);//返回状态：0 success，1 重复，2其他原因
     public boolean UpdateNotice(Notice notice);//返回状态：0 success，1 重复，2其他原因
     public boolean DeleteNotice(String noticeid);//删除公告，返回状态：0 success，1 重复，2其他原因
diff --git a/src/main/java/database/Database1.java b/src/main/java/database/Database1.java
index f835288..ed64717 100644
--- a/src/main/java/database/Database1.java
+++ b/src/main/java/database/Database1.java
@@ -156,20 +156,40 @@
         return seed;
     }
 
+    @Override
+    public Seed[] GetSeedListByTag(String tag){
+        JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
+        QSeed s = QSeed.seed;
+        List<Seed> seeds = query.select(s).from(s).where(s.seedtag.eq(tag)).fetch();
+        return seeds.toArray(new Seed[0]);
+    }
+
     //添加一个新的种子，0成功，其他失败信息待定;
     @Override
     public int RegisterSeed(Seed seedinfo){
         try {
+            entitymanager.getTransaction().begin();
             JPAQuery<Seed> query = new JPAQuery<>(entitymanager);
             QSeed s = QSeed.seed;
             Seed seed = query.select(s).from(s).where(s.seedid.eq(seedinfo.seedid)).fetchOne();
+            User user = entitymanager.find(User.class, seedinfo.seeduserid);
+            if (user == null) {
+                entitymanager.getTransaction().rollback();
+                return 2; // 用户不存在
+            }
+            seed.user = user; // 设置种子的用户关联
             if (seed != null) {
+                entitymanager.getTransaction().rollback();
                 return 1;
             }
             entitymanager.persist(seedinfo);
+            entitymanager.getTransaction().commit();
             return 0;
         } catch (Exception e) {
             e.printStackTrace();
+            if (entitymanager.getTransaction().isActive()) {
+                entitymanager.getTransaction().rollback();
+            }
             return 2;
         }
     }
diff --git a/src/main/java/database/Database2.java b/src/main/java/database/Database2.java
index 8ea93b0..5152e47 100644
--- a/src/main/java/database/Database2.java
+++ b/src/main/java/database/Database2.java
@@ -128,6 +128,11 @@
     }
 
     @Override
+    public Seed[] GetSeedListByTag(String tag) {
+        return new Seed[0];
+    }
+
+    @Override
     public boolean AddCollect(String userid, String postid) {
         return false;
     }
