searchTags调试

This commit is contained in:
670788339
2025-10-29 17:20:18 +08:00
parent 448bc0f1e4
commit 46fefd3fe0

View File

@@ -126,10 +126,10 @@ public class CourseTagDao extends BaseDao<CourseTag> {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
List<Object> parameters = new ArrayList<>(); List<Object> parameters = new ArrayList<>();
// 查询所有必要字段保持两个UNION查询字段一致 // 只查询实际存在的字段
sql.append("SELECT id, tag_name, sys_create_time, is_public, is_hot, last_set_hot_time, deleted, sys_create_aid, sys_update_aid, sys_update_time "); sql.append("SELECT id, tag_name, is_public, is_hot, use_count, last_set_public_time, last_set_hot_time, deleted, sys_create_time ");
sql.append("FROM ( "); sql.append("FROM ( ");
sql.append(" SELECT id, tag_name, sys_create_time, is_public, is_hot, last_set_hot_time, deleted, sys_create_aid, sys_update_aid, sys_update_time "); sql.append(" SELECT id, tag_name, is_public, is_hot, use_count, last_set_public_time, last_set_hot_time, deleted, sys_create_time ");
sql.append(" FROM boe_course_tag "); sql.append(" FROM boe_course_tag ");
sql.append(" WHERE deleted = 0 AND is_public = 0 "); sql.append(" WHERE deleted = 0 AND is_public = 0 ");
@@ -139,7 +139,7 @@ public class CourseTagDao extends BaseDao<CourseTag> {
} }
sql.append(" UNION ALL "); sql.append(" UNION ALL ");
sql.append(" SELECT t.id, t.tag_name, t.sys_create_time, t.is_public, t.is_hot, t.last_set_hot_time, t.deleted, t.sys_create_aid, t.sys_update_aid, t.sys_update_time "); sql.append(" SELECT t.id, t.tag_name, t.is_public, t.is_hot, t.use_count, t.last_set_public_time, t.last_set_hot_time, t.deleted, t.sys_create_time ");
sql.append(" FROM boe_course_tag_relation r "); sql.append(" FROM boe_course_tag_relation r ");
sql.append(" INNER JOIN boe_course_tag t ON r.tag_id = t.id "); sql.append(" INNER JOIN boe_course_tag t ON r.tag_id = t.id ");
sql.append(" WHERE r.deleted = 0 AND t.deleted = 0 AND t.is_public = 1 "); sql.append(" WHERE r.deleted = 0 AND t.deleted = 0 AND t.is_public = 1 ");
@@ -154,8 +154,7 @@ public class CourseTagDao extends BaseDao<CourseTag> {
parameters.add("%" + tagName + "%"); parameters.add("%" + tagName + "%");
} }
// 保留GROUP BY以避免重复数据但确保SELECT字段与GROUP BY字段一致 sql.append(" GROUP BY t.id, t.tag_name, t.is_public, t.is_hot, t.use_count, t.last_set_public_time, t.last_set_hot_time, t.deleted, t.sys_create_time ");
sql.append(" GROUP BY t.id, t.tag_name, t.sys_create_time, t.is_public, t.is_hot, t.last_set_hot_time, t.deleted, t.sys_create_aid, t.sys_update_aid, t.sys_update_time ");
sql.append(") AS all_tags "); sql.append(") AS all_tags ");
sql.append("ORDER BY "); sql.append("ORDER BY ");
@@ -167,7 +166,7 @@ public class CourseTagDao extends BaseDao<CourseTag> {
sql.append(" AND (sys_type1 = ? "); sql.append(" AND (sys_type1 = ? ");
sql.append(" OR sys_type2 = ? "); sql.append(" OR sys_type2 = ? ");
sql.append(" OR sys_type3 = ?) "); sql.append(" OR sys_type3 = ?) ");
sql.append(" GROUP BY tag_id "); // 内部查询仍需要GROUP BY sql.append(" GROUP BY tag_id ");
sql.append(" ) THEN 0 ELSE 1 END, "); sql.append(" ) THEN 0 ELSE 1 END, ");
parameters.add(Long.valueOf(typeId)); parameters.add(Long.valueOf(typeId));
parameters.add(Long.valueOf(typeId)); parameters.add(Long.valueOf(typeId));
@@ -176,13 +175,34 @@ public class CourseTagDao extends BaseDao<CourseTag> {
sql.append(" sys_create_time DESC"); sql.append(" sys_create_time DESC");
javax.persistence.Query query = entityManager.createNativeQuery(sql.toString(), CourseTag.class); // 不使用实体类映射,手动处理结果集
Query query = entityManager.createNativeQuery(sql.toString());
for (int i = 0; i < parameters.size(); i++) { for (int i = 0; i < parameters.size(); i++) {
query.setParameter(i + 1, parameters.get(i)); query.setParameter(i + 1, parameters.get(i));
} }
return query.getResultList(); @SuppressWarnings("unchecked")
List<Object[]> results = query.getResultList();
List<CourseTag> courseTags = new ArrayList<>();
for (Object[] result : results) {
CourseTag tag = new CourseTag();
// 设置基本字段
if (result[0] != null) tag.setId(String.valueOf(result[0]));
if (result[1] != null) tag.setTagName(String.valueOf(result[1]));
if (result[2] != null) tag.setIsPublic(Boolean.valueOf(String.valueOf(result[2])));
if (result[3] != null) tag.setIsHot(Boolean.valueOf(String.valueOf(result[3])));
if (result[4] != null) tag.setUseCount(Integer.valueOf(String.valueOf(result[4])));
// if (result[5] != null) tag.setLastSetPublicTime((LocalDateTime) result[5]);
// if (result[6] != null) tag.setLastSetHotTime((LocalDateTime) result[6]);
// if (result[7] != null) tag.setDeleted(Boolean.valueOf(String.valueOf(result[7])));
// if (result[8] != null) tag.setSysCreateTime((LocalDateTime) result[8]);
courseTags.add(tag);
}
return courseTags;
} }