当前位置: 首页 > 知识库问答 >
问题:

JPA@Query java.lang.IllegalArgumentException:

慕容玉书
2023-03-14

这个代码有问题

public interface CharityRepository extends CrudRepository<Charity,Long> {

  @Query("select sum(sponsorSum) from Charity")
  Integer totalCharitySum();
}

抛出异常

UnsatisfiedDependencyException:创建文件[D:\IdeaProjects\MaraphonSkills(3)\Target\类\COM\Maraphon\MaraphonSkills\Controllers\AdminController.class]中定义的名为“Admin Controller”的bean时出错:通过构造函数参数0表示的不满足的依赖项;嵌套异常为org.springframework.beans.factory.unsatisfiedDependencyException:创建文件[D:\IdeaProjects\maraphonskills(3)\target\类\com\maraphon\maraphonskills\service\charityServiceImpl.class]中定义的名为“慈善ServiceImpl”的bean时出错:通过构造函数参数0表示的不满足的依赖项;嵌套异常为org.springframework.beans.factory.beanCreationException:创建名为“charity repository”的bean时出错:调用init方法失败;嵌套异常为java.lang.IllegalArgumentException:方法public abstract java.lang.short com.maraphon.maraphonskills.Repository.CharityRepository.TotalCharitySum()查询验证失败!

原因:org.springframework.beans.factory.unsatisfiedDependencyException:创建文件[D:\IdeaProjects\maraphonskills(3)\target\类\com\maraphon\maraphonskills\service\charityServiceImpl.class]中定义的名为“慈善服务Impl”的bean时出错:通过构造函数参数0表示的依赖项不满足;嵌套异常为org.springframework.beans.factory.beanCreationException:创建名为“charity repository”的bean时出错:调用init方法失败;嵌套异常为java.lang.IllegalArgumentException:方法public abstract java.lang.short com.maraphon.maraphonskills.Repository.CharityRepository.TotalCharitySum()查询验证失败!

原因:org.springframework.beans.factory.BeanCreationException:创建名为“charity repository”的bean时出错:调用init方法失败;嵌套异常为java.lang.IllegalArgumentException:方法public abstract java.lang.short com.maraphon.maraphonskills.Repository.CharityRepository.TotalCharitySum()查询验证失败!

原因:java.lang.IllegalArgumentException:方法public abstract java.lang.short com.maraphon.maraphonskills.Repository.CharityRepository.TotalCharitySum()的查询验证失败!

原因:java.lang.NullPointerException:null

但这段代码工作正常

public interface CharityRepository extends CrudRepository<Charity,Long> {
  @Query("select sum(sponsorTarget) from Registration")
  Short totalSum();
}

@修改无济于事。有什么问题吗?

慈善守则

 @Entity
@EqualsAndHashCode(exclude = "registrations")
@Data
public class Charity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    @Lob
    private String description;
    private String fileName;
    private Short SponsorSum;

    @OneToMany(mappedBy = "charity")
    public Set<Registration> registrations = new HashSet<>();
    }

注册码

    @Entity
@EqualsAndHashCode(exclude = "sponsorShips")
@Data
public class Registration {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    public Runner runner;
    private String registrationDateTime;
    @ManyToOne
    public Charity charity;
    @ManyToOne
    public RaceKitOption raceKitOption;
    @ManyToOne
    public RegistrationStatus registrationStatus;

    private Short sponsorTarget;
    @OneToMany(mappedBy = "registration")
    public Set<SponsorShip> sponsorShips = new HashSet<>();
   // public RegistrationEvent registrationEvent;
}

共有1个答案

吴经略
2023-03-14

提示:Java区分大小写。

问题在于在您的CharityRepository接口中使用小写sponsorSum:

@Query("select sum(sponsorSum) from Charity")

和大写一:

private Short SponsorSum;

在两者中使用相同的大小写,它将解决您的问题。

 类似资料:
  • 我有两个实体。父母和孩子。 儿童知识库。JAVA 我试图通过标准找到子实体,它应该总是有父实体。 我得到一个例外,它试图在地址表中找到parentObj。 我找到了这个链接,并尝试了Joep给出的解决方案,但出现了相同的错误。 Spring数据JPA JpaSpecificationExecator EntityGgraph 我错过了什么。我无法理解为什么/如何在just Child对象中查找pa

  • 当使用JPA createQuery()时,我发现我们可以同时使用类名和实体名来获取DB数据。 这是按类名写的 em.createQuery(“from com.model.Stuff s”, Stuff.class).getResultList(); 这是来自实体名称 em.createQuery("from Stuff s",Stuff.class). getResultList(); 这是在

  • 我有一个oracle视图,我在其中查询我的数据库。 我使用< code>jpa 2.1和< code>hibernate 4.3.7将视图映射到实体。我的实体类如下所示: 我的映射 xml 看起来像这样: 因此,我使用jpa正确查询我的实体,它返回我的所有记录。问题是,当我异步更改数据库中的数据时,令人震惊的是,我的jpa查询返回以前的记录。我做错了什么吗?

  • 我正在运行一个JPA测试,我在这篇文章的末尾不断得到错误。我不知道为什么我会得到这个错误,但是,我在JUnit测试时没有得到这个错误。我知道这可能是一个一般性的信息和一个广泛的问题,但如果有一个简单的答案,我将不胜感激。 以下是我的3个类文件: 以下是完整的堆栈跟踪:

  • Micronaut/JPA/Hibernate小写了我的数据库表的名称,并在启动时抛出一个错误,说找不到该表。表在那里,但它是用大写字母命名的。我如何配置micronaut/jpa/hibernate来考虑我的表名的大小写 我在MySQL8数据库中有一个现有的表< code >小部件,我需要使用jpa/hibernate从micronaut服务访问它。不幸的是,在启动时的模式验证期间抛出了一个错误

  • 你可以使用JPA实体作为流程变量,并且可以这样做: 基于流程变量更新已有的JPA实体,它可以在用户任务的表单中填写或者由服务任务生成。 重用已有的领域模型不需要编写显示的服务获取实体或者更新实体的值。 根据已有实体的属性做出判断(网关即分支聚合)。 ... 要求 只支持符合以下要求的实体: 实体应该使用JPA注解进行配置,我们支持字段和属性访问两种方式。@MappedSuperclass也能够被使

  • 16.4 JPA Spring JPA在org.springframework.orm.jpa包中已经可用,Spring JPA用了Hibernate集成相似的方法来提供更易于理解的JPA支持,与此同时,了解了JPA底层实现,可以理解更多的Spring JPA特性。 16.4.1 Spring中JPA配置的三个选项 Spring JPA支持提供了三种配置JPAEntityManagerFactor

  • 1.JPA 1.1 自动扫描Entity 彻底删除persistence.xml中Entity的逐一配置,采用自动扫描。因为Weblogic/Jboss这些自带JPA支持的应用服务器有时候会多管闲事的扫描persistence.xml,因此彻底删除掉这个文件是个不错的选择。 <bean id="entityManagerFactory" class="org.springframework