工作

总结

  1. #总结 JPQL 中传入一个 List 对象取数据。List 为空或者 null 时的情况,需要考虑。不能出现,List 为空时,取出所有数据的情况。
  2. JPQL 中判断数据有无时,同样的 where 条件,限定取一条数据,比使用 count 函数,更高效。 Pasted image 20241219152611.png
方法 优点 缺点
COUNT 简单直观,适用于统计记录数 可能涉及聚合操作,性能较低
LIMIT 1 早期停止查询,性能较高 需要额外处理结果集

工作

#总结 关于微修正,不止可以修改固定文字和 layout。出力部分,也有一些是可以修改的。

  • 15194 EDUCOM 標準版 お知らせ(共通) 修正
  • 15783 【新規】 久喜市 運動器検診結果のお知らせ(異常あり) Pasted image 20241218143511.png

工作

  • #总结 按照式样书要求编程,不要按照 seed 的数据进行编程。

  • 连携中,关于以下式样,测试条件有哪些

    • (Array)評価項目存在する
      1. 该项目的 key 不存在
      2. 该项目 key 的 value 是 null
    • (Array)評価項目の配列が 0 件(exams)
      1. 该项目 key 的 value 是 []
    • (String)「3-1.評価項目名」 exam_subject_name 存在する
      1. 该项目的 key 不存在
      2. 该项目 key 的 value 是 null
    • 问题?
      1. 该项目 key 的 value 是空字符串:""
        目前测试不了,这种情况可以转成 java 对象,只不过 java 对象里面所有属性都为 null。
      2. 该项目 key 的 value 是空白:" "
        目前测试不了,这种情况可以转成 java 对象,只不过 java 对象里面所有属性都为 null。
      3. 该项目 key 的 value 是其他指定外的值,例如以下情形:
        1. Pasted image 20241217090704.png
        2. Pasted image 20241217090726.png
    • 解决方法
      • 自定义适配器来解决?
        • TemporalNonNillableAccessorJsonbAdapter
        • TemporalNonNillableAccessorXmlAdapter

其他

  • java14 的 record 类型

#JQPL #总结 IN 语法

  • select c1.entityId from RegionGroupScheduleCategory c1, IN(c1.postCenterSettings) pc1 where c1.xxx = xxx and pc1.xxx = xxx

工作

#总结 测试的时候,账号不仅要使用权限最大的,例如:educom。还要使用普通用户。

工作

工作

工作

public enum MenuAttribute {  
  
    NONE(u -> false), //  
    ADMIN(u -> Optional.ofNullablebooleanValue).orElse(false), //  
    ALL(u -> true), //  
    CENTER(u -> SchoolType.CENTER_TYPES.contains(u.getCorrespondingEducationInstitute().getSchoolType().getSchoolTypeId())), //  
    SCHOOL(u -> !SchoolType.CENTER_TYPES.contains(u.getCorrespondingEducationInstitute().getSchoolType().getSchoolTypeId())), //  
    ;  
  
    private MenuAttribute(final Predicate<LoginAccount> predicate) {  
        this.predicate = predicate;  
    }  
  
    final boolean isApplicableTo(final LoginAccount user) {  
        return predicate.test(user);  
    }  
  
    final private Predicate<LoginAccount> predicate;  
}

工作

工作

工作

其他

  • 安装 ubuntu 系统
  • #总结 微修正,没有 c4l 文件,需要 ask。
  • 这是什么写法?
@ManyToOne(fetch = FetchType.LAZY, optional = false)  
@JoinColumns({ @JoinColumn(name = "teacher_entityid", referencedColumnName = "entityid"), @JoinColumn(name = "educom_id", referencedColumnName = "educom_id") })  
private Teacher teacher;
  • 新加了一个字段,提示如下?
    • 重启下 DB,就好了。
      Pasted image 20241204104410.png

工作

  • 09:00 #tips 2013 学習系システムからデータ取得 素点取得 comment:37

    • 15593_comment142
    • ①対象の評価項目(担当別)に紐づく大問(examination_question)を検索,这边是参照 評価項目取込>更新定義 _ 評価項目(担当別)sheet > 56 行的式样做的
    • SakaiResultsOfEye
    • SakaiResultsOfEye2
    • SakaiResultsOfEyesight
    • SakaiResultsOfEarNoseThroat
    • SakaiResultsOfUrinology
    • SakaiResultsOfUrinology3
    • SakaiResultsOfDentistry
    • SakaiResultsOfUrinology2
  • 制造管理票
    #15897 堺市 お知らせ(眼科) 修正 530 行
    #15895 堺市 お知らせ(眼科・通院中) 修正 534 行
    #15900 堺市 耳鼻咽頭健康修正しました。診断結果のお知修正しました。らせ 修正 538 行
    #15882 堺市 お知らせ(視力) 修正 542 行
    #15864 堺市 お知らせ(尿糖) 修正 562 行
    #15867 堺市 お知らせ(歯科) 修正 566 行
    #15892 堺市 お知らせ(尿・追跡者用) 修正 570 行
    #15893 堺市 お知らせ(尿・蛋白潜血) 修正 574 行

  • #总结 修改一个共通,其他账票全都修正的,怎么发邮件?
    Pasted image 20241204085751.png

工作

其他

  • 为什么 JPA 的项目,定义了一个 entity,进行业务开发时,还要定义一个 entity 对应的 entityData

工作

    • 11/7 宮崎祥子 No4,6,11,12 を削除

工作

工作

工作

其他

  • #总结 关于 flush、事务、commit 的区别?以及各自的特性?

    • flush
      • 1 千条数据的时候,一个一个 flush,和 一次 flush,差别不大。
      • 几千条数据的时候,一次 flush,比一个一个 flush 快。
      • 上万条数据的时候,一次 flush 也比较慢,最好分成,一千条 flush 一次。
        • 上万条数据一起 flush 的时候,上万条数据需要在内存里面一起顺一遍,会比较慢
  • #总结 关于 DB 的错误,flush 的时候才会被捕获。例如 15593 学習系システムからデータ取得 素点取得(3.16.03) 中如下代码:

    • 式样要求捕获 DB error,但是如果没有questionScoreLifecycle.flush(); 就 catch 不到异常。
// 更新 or 登録  
try {  
    createOrUpdateQuestionScore(studentData, cache, examCache);  
} catch (final PersistenceException e) {  
    throw newBusinessException(resultBuilder);  
}

private void createOrUpdateQuestionScore(final JsonAssessResultStudentData studentData, final ProcessCache cache, final ExamCache examCache) {  
    final ExamQuestionScoreLifecycle questionScoreLifecycle = getLifecycle(ExamQuestionScoreLifecycle.class);  
    final GradeMembershipLifecycle gradeMembershipLifecycle = getLifecycle(GradeMembershipLifecycle.class);  

    for (final JsonAssessResultViewPointData viewPointData : distinctList) {  
        if (examQuestion != null) {  
            final ExamQuestionScore questionScore = questionScoreLifecycle.findByGradeMembershipAndExamQuestion(gradeMembership, examQuestion);  
            if (questionScore != null) {  
                questionScoreLifecycle.update(questionScore, (entity, context) -> {  
                    entity.setScore(Integer.parseInt(viewPointData.getViewpointScore()));  
                });  
            } else {  
                questionScoreLifecycle.create((entity, context) -> {  
                    entity.setExamQuestion(examQuestion);  
                    entity.setGradeMembership(gradeMembership);  
                    entity.setScore(Integer.parseInt(viewPointData.getViewpointScore()));  
                });  
            }  
        }  
    }  
    
    questionScoreLifecycle.flush();  
}

工作

  1. json 文件,tag 排序
@XmlType(propOrder = { "schoolId", "localStudentId", "observationDay", "observationContents", "observationUser", "uniqueKey", "transactionNo" })  
@JsonbPropertyOrder(value = { "schoolId", "localStudentId", "observationDay", "observationContents", "observationUser", "uniqueKey", "transactionNo" })  
@ToStringAppendedProperty(ToStringAppendType.DUMP)  
public class JsonObservationRecordCoordinationData implements SmartSchoolData {
  1. @XmlRootElement 可加可不加吗

工作

其他

  • ISO8601 の年月日形式(YYYY-MM-DD)
  • v3,BoardInfoParameter 的 getTargetDate 方法,为什么要加注解:@XmlJavaTypeAdapter(LocalDateNonNillableXmlAdapter.class)
  • LocalDate 与 Date、TemporalAccessor 与 Date

工作

  • #常用注解 @ReplicatorMapping(mappingStrategy = ReplicatorMappingStrategy.REPLICATE_RECURSIVELY) 的作用?@ReplicatorMapping(skip = true) 的作用?

    • entity 转 businessData 用到的?
  • #总结 entity 分事务?entity 不能跨事务传递?

    • 跨事务的时候,在新事务中直接查看 entity 是可以的,使用这个 entity 调用 jpql 查询也是可以的。但是新规或者更新时,不能使用这个 entity,entity 不能与新事务中的 entity 产生关联。
  • #todo 静态内部类与非静态内部类的区别?

    • 线程安全主要是由于类中的静态成员(如静态字段或静态方法)被多个线程共有。而不是因为类是静态或者非静态。因为静态类或者非静态类,都是需要 new 一个新的对象来使用的。
  • 疑问?

    • 为什么如下,得到的 grade,不能直接在新规 entity 时,entity.setGrade 使用。而必须重新 findById 查找一遍 grade,才能使用。不然,会生成很多的 sql 文,直至内存溢出。
      Pasted image 20241113153711.png
  • newSimpleDateFormat 会存在线程安全问题吗?

  • 2 个 lifecycle create,最后只要 flush 一个就可以了。

工作

工作

其他

  • #todo 接口,返回 map 给前端?

工作

工作

@Override  
public List<HomeroomClassMembership> findByHomeroomClassAndDate(final IntraSchoolGroup intraSchoolGroup, final Date startDate, final Date endDate, final boolean orderBySex) {  
  
    final StringBuilder buf = new StringBuilder();  
    buf.append("select c from Student s, IN(s.schoolMembershipHistory) h, IN(h.gradeMemberships) g, IN(g.homeroomClassMemberships) c ");  
    buf.append(" where c.homeroomClass = :theClass ");  
    buf.append(" AND NOT (  c.joinedDate > :theEndDate  OR  (  c.leftDate IS NOT NULL AND c.leftDate < :theStartDate ) )");  
    if (orderBySex == true) {  
        buf.append(" order by s.userSex DESC , c.studentNumber ASC");  
    } else {  
        buf.append(" order by c.studentNumber");  
    }  
    final Query query = getEntityManager().createQuery(buf.toString());  
    query.setParameter("theClass", intraSchoolGroup);  
    query.setParameter("theStartDate", startDate);  
    query.setParameter("theEndDate", endDate);  
  
    return getQueryResultList(query);  
}

工作

其他

  • excel 怎么检索图表中的文字?
  • #总结 entity 定义中,@JoinColumn 的 nullable 和 @ManyToOne 的 optional,有什么联系和区别
    • nullable 是物理层面上的约束,它决定了数据库中的列是否可以存储 NULL 值。
    • optional 是逻辑层面上的约束,它决定了在应用中是否允许关系对象为 null
    • nullableoptional 都是用来指定某个字段是否可以为空。在设计时,通常希望 nullableoptional 保持一致,即如果数据库列不允许为 NULLnullable = false),那么在应用层也应该不允许关系对象为 nulloptional = false)。
  • 使用 git svn rebase 更新代码,提示 Checksum mismatch

工作

工作

#总结 使用@EJB 引用的 service,需要在类上面添加@Local 注解,类似 V4 中的 ContactLocalService

工作

工作

其他

  • 一个 entity 实现了 Comparable 接口,并重写了 compareTo 方法。使用这个 entity 时,如何才能进行排序
    • 将 entity 放入 list 中,然后调用 sort 方法(Collections.sort(entityList))进行排序
    • 将 entity 放入 sortedset 中,会自动根据 conpareTo 的实现,进行排序。
  • git,已经提交远程服务器的提交,能撤销吗。还是只能回复至之前的代码,然后再次提交
    • git revert 命令用于撤销特定的提交,但它会创建一个新的提交来记录这次撤销操作。这种方法不会改变提交历史,因此适合在多人协作的环境中使用,因为它不会影响其他开发者的提交。这种方法的优点是安全,因为它不会改变提交历史,适合在多人协作时使用。
      • 使用 git log 查看提交历史,找到要撤销的提交的哈希值。
      • 运行 git revert <commit_id> 来撤销该提交。
      • 提交新的撤销提交。
    • git reset 命令用于将当前分支的 HEAD 指针移动到指定的提交,并可以选择性地重置工作目录和暂存区。这种方法会改变提交历史,因此需要谨慎使用,尤其是在已经推送到远程仓库的情况下。这种方法的优点是可以完全回退到某个历史版本,清除之后的所有改动,但需要注意它会改变提交历史,可能会影响其他开发者的提交。
      • 使用 git log 查看提交历史,找到要回退到的提交的哈希值。
      • 运行 git reset --hard <commit_id> 来回退到该提交。
      • 如果需要,可以使用 git push --force 强制推送本地更改到远程仓库。
    • 如果你已经将提交推送到远程仓库,并且希望撤销这些提交,推荐使用 git revert 方法,因为它不会改变提交历史,适合在多人协作的环境中使用。如果你确定不需要保留这些提交的历史记录,可以使用 git reset 方法,但要注意它会改变提交历史,并可能影响其他开发者的工作。
  • SupportInformation.c4 乱码,怎么解决?

工作

工作

工作

工作

工作

工作

工作

工作

其他

git 撤销提交

  • revert commit

    • 功能:通过创建一个新的提交来逆向之前提交的更改,不会删除原始提交记录。
    • 使用场景:安全地撤销公共提交,保留历史完整性。
    • 执行如下操作后:当前代码没有 test 提交的部分。
    • c5a4ca9bf0388ff98f0f72daaf9ed280_MD5.jpeg
  • drop commit

    • 功能:删除指定的提交记录,包括代码更改和提交信息。
    • 使用场景:在本地分支中删除不需要的提交,但会丢失该提交的历史。
    • 对上述的,Revert "test",执行 drop commit 操作后:提交记录里面没有了,当前代码,有 test 提交的部分
    • 7915ce8a4501acb9c802c6ed18a78fd0_MD5.jpeg
  • undo commit

    • 功能:撤销工作目录或暂存区的更改,不涉及历史提交记录。
    • 使用场景:快速撤销未推送的本地更改,不影响远程仓库。
    • 对上述的,test,执行 undo commit 操作后:提交记录里面没有了,当前代码,有 test 提交的部分,并且是已修改的状态 Dailynote/attachments/12e44a934caf8dea30cbd983d4c4d0aa_MD5.jpeg

工作

其他

  • js 函数调用方式其一
yearPopupView['popup'](param);

'popup': function (param) {  
  this.$el.css('display', 'flex');  
  $('#ribbonArea').hide();  
  backgroundController.toggle(true);  
},

工作

其他

  • #总结 html 上的元素,如果需要做显隐控制,初始化的时候,一定是隐藏的。默认显示,然后隐藏,会有一个视觉的延迟。

其他

  • PermissionCheckInterceptor 拦截器的步骤
    1. 前端通过 ajax,访问 rest 接口
    2. rest 接口,尝试去调用对应的方法
    3. 尝试调用@Remote 标注的 service 接口时,被拦截器拦截了