babyfish-ct / jimmer

A revolutionary ORM framework for both java and kotlin.
Apache License 2.0
715 stars 72 forks source link

删除具有外键关联的实体时出现 NullPointerException #644

Closed zhengchalei closed 2 weeks ago

zhengchalei commented 2 weeks ago

描述: 在尝试删除具有外键关联的实体时,遇到了 NullPointerException,提示 args.retainedIdPairsnull

复现步骤:

  1. 创建具有外键关系的实体。
  2. 尝试删除仍存在引用该实体的外键的实体。

错误信息:

java.lang.NullPointerException: Cannot invoke "org.babyfish.jimmer.sql.ast.impl.mutation.IdPairs.entries()"
because "args.retainedIdPairs" is null

预期行为: 在不能完成删除时抛出更有意义的异常,指出存在外键约束和更有好的提示信息。

实际行为: 抛出了 NullPointerException 而不是更有意义的错误信息。

zhengchalei commented 2 weeks ago
java.lang.NullPointerException: Cannot invoke "org.babyfish.jimmer.sql.ast.impl.mutation.IdPairs.entries()" because "args.retainedIdPairs" is null
    at org.babyfish.jimmer.sql.ast.impl.mutation.MiddleTableOperator.disconnect(MiddleTableOperator.java:504) ~[jimmer-sql-0.8.158.jar:na]
    at org.babyfish.jimmer.sql.ast.impl.mutation.MiddleTableOperator.disconnect(MiddleTableOperator.java:478) ~[jimmer-sql-0.8.158.jar:na]
    at org.babyfish.jimmer.sql.ast.impl.mutation.Deleter.execute(Deleter.java:143) ~[jimmer-sql-0.8.158.jar:na]
    at org.babyfish.jimmer.sql.ast.impl.mutation.DeleteCommandImpl.executeImpl(DeleteCommandImpl.java:53) ~[jimmer-sql-0.8.158.jar:na]
    at org.babyfish.jimmer.spring.cfg.support.SpringConnectionManager.execute(SpringConnectionManager.java:31) ~[jimmer-spring-boot-starter-0.8.158.jar:na]
    at org.babyfish.jimmer.sql.ast.impl.mutation.DeleteCommandImpl.execute(DeleteCommandImpl.java:38) ~[jimmer-sql-0.8.158.jar:na]
    at org.babyfish.jimmer.sql.ast.impl.mutation.DeleteCommandImpl.execute(DeleteCommandImpl.java:17) ~[jimmer-sql-0.8.158.jar:na]
    at org.babyfish.jimmer.sql.kt.impl.KEntitiesImpl.delete(KEntitiesImpl.kt:253) ~[jimmer-sql-kotlin-0.8.158.jar:na]
    at org.babyfish.jimmer.sql.kt.KEntities.delete$default(KEntities.kt:106) ~[jimmer-sql-kotlin-0.8.158.jar:na]
    at org.babyfish.jimmer.spring.repository.support.KRepositoryImpl.deleteById(KRepositoryImpl.kt:158) ~[jimmer-spring-boot-starter-0.8.158.jar:na]
    at org.babyfish.jimmer.spring.repository.KRepository.deleteById(KRepository.kt:240) ~[jimmer-spring-boot-starter-0.8.158.jar:na]
babyfish-ct commented 2 weeks ago

Try 0.8.159