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

查询中的JPA似乎不返回任何结果

空翼
2023-03-14

我正在尝试运行一个in查询(springboot jpa mysql)。我已经启用了调试日志,查询似乎很好,但是SpringJPA没有返回任何结果。

以下是配置:

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

     <dependencies>
        <!-- Spring dependencies -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.23</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

这是我的存储库:

@Query(value = "select * from targeting_locations where targeting_location_master_id in (:targetingLocationMasterIds)", nativeQuery = true)
List<TargetingLocations> findAllByTargetingLocationMasterIdIn(@Param("targetingLocationMasterIds") List<Long> targetingLocationMasterIds);

//或

@Query("SELECT t FROM TargetingLocations t WHERE t.targetingLocationMasterId IN :targetingLocationMasterIds")
    List<TargetingLocations> findAllByTargetingLocationMasterIdIn(@Param("targetingLocationMasterIds") List<Long> targetingLocationMasterIds);

这里需要注意的是,“in”查询中的列不是主键。

@Entity
@Table(name = "targeting_locations")
public class TargetingLocations {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long id;

    @Column(name = "geohash")
    public String geoHash;

    @Column(name = "site_name")
    public String siteName;

    @Column(name = "city")
    public String city;

    @Column(name = "country")
    public String country;

    @Column(name = "state")
    public String state;

    @Column(name = "latitude")
    public Double latitude;

    @Column(name = "longitude")
    public Double longitude;

    @Column(name = "targeting_type")
    public String targetingType;

    @Column(name = "targeting_data")
    public String targetingData;

    @Column(name = "targeting_location_master_id")
    public Long targetingLocationMasterId; // ----> in query in this column

生成的查询:

Hibernate: 
    select
        targetingl0_.id as id1_1_,
        targetingl0_.city as city2_1_,
        targetingl0_.country as country3_1_,
        targetingl0_.geohash as geohash4_1_,
        targetingl0_.latitude as latitude5_1_,
        targetingl0_.longitude as longitud6_1_,
        targetingl0_.site_name as site_nam7_1_,
        targetingl0_.state as state8_1_,
        targetingl0_.targeting_data as targetin9_1_,
        targetingl0_.targeting_location_master_id as targeti10_1_,
        targetingl0_.targeting_type as targeti11_1_ 
    from
        targeting_locations targetingl0_ 
    where
        targetingl0_.targeting_location_master_id in (
            ?
        )
2021-02-23 16:22:46.199 TRACE 28282 --- [           main] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [BIGINT] - [13063]

共有1个答案

裴威
2023-03-14

只需在存储库中将其定义为一种方法。

List<TargetingLocations> findByTargetingLocationMasterIdIn(List<Long> targetingLocationMasterIds);

删除@Query,并且名称应以findBy开头。。。不是芬德尔。。。

您想要实现的功能将由SpringJPA自动实现

 类似资料:
  • 我在使用MongoDB查询时遇到问题。每当我尝试通过ID或任何其他字段查找时,我总是得到零结果返回。我也很难使用“like”操作符。 我想以不区分大小写的方式查询书名。而且我知道你可以在MongoDB中这样做: 我试着装腔作势地做,但我不能让它起作用: 我看到控制台上打印出以下行:{“title”:{“$regex”:“/^harr.*/I”}} 我也尝试过一个文档,但也不成功: 结果却是零。 这

  • 问题内容: 我正在尝试向表中插入一些行…我正在使用 postgressql-7.2.jar。 我得到以下异常 org.postgresql.util.PSQLException:查询未返回任何结果。 在org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255) 我已经用Googl

  • 我正在玩mongob,并将一些测试数据{name:"david"}输入到“用户”集合中。我通过键入mongoshell验证了数据在MongoDB中 结果: 在 node.js 脚本中,使用以下代码: 不返回任何结果 我没有发现任何错误,也没有错误。请告知

  • 问题内容: 不知道为什么将其链接为骗子。 问题是不同的。答案是不同的。不知道要更改什么。如果有人看到我想念的东西,请告诉我… 使用这两个查询,我得到的结果数量不同。在分析了几个小时之后,我需要扔掉毛巾,承认我无法发现重要性的差异。由于我的方法库已空荡荡,因此我需要帮助。 LINQ SQL 第一个问题是上述两个陈述是否确实相等,或者我是否缺少某些内容。第二个问题是我所缺少的(如果有的话)或如何解决它

  • 问题内容: 这是我的架构 我做了这样的一个NEST查询: 并返回零元素! 如果我查看数据库(使用邮递员),则可以看到我的文档: 问题答案: 听起来您可能没有在为文档建立索引 之前 将类型的映射显式地放入索引中,所以Elasticsearch已基于所看到文档中字段的默认映射来推断该映射。例如,给定以下类型 如果我们按以下方式索引一些文档 在控制台中输出以下内容 我们没有匹配的文件。在Elastics

  • [root@externalsystem~]#curl-xpost-h'请求:{“request”:“prepareandexecute”,“connectionid”:“000000-0000-0000-00000000”,“stateMentID”:12345,“sql”:“select*FROM questtweets1”,“maxrowcount”:1}'http://here.comes