java - 只读数据的 Spring Boot 存储库 : @Query annotation type not applicable to this kind of declaration

标签 java spring postgresql spring-boot jpa

我正在尝试创建一个基本存储库,以便我可以获得 Postgres 支持的我所在地区的时区。我收到错误“注释类型不适用于此类声明”。 我应该如何处理这个问题?为什么我不允许在这里定义查询?

import com.me.model.PgTz;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface TzRepository extends org.springframework.data.repository.Repository<PgTz,String>
{
    @Query("SELECT tz FROM PgTz tz WHERE tz.name STARTSWITH 'US/' OR tz.name STARTSWITH 'America/'");
    Iterable<PgTz> findPgTzByName(); 
}

最佳答案

该问题是由于 @Query() 声明后的分号引起的,这在 java 中是非法的。删除它应该可以修复编译问题。

@Query("SELECT tz FROM PgTz i WHERE i.name STARTSWITH('US/') OR i.name STARTSWITH('America/')")
Iterable<PgTz> findPgTzByName(); 

参见Annotations Basics

关于java - 只读数据的 Spring Boot 存储库 : @Query annotation type not applicable to this kind of declaration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62333160/

相关文章:

java - 覆盖 Enum#toString 不可取?

java - 服务器入站重定向找不到下一个 ReSTLet

sql - 如何使 PostgresQL 优化器在绑定(bind)参数后构建执行计划?

sql - UNION ALL 是获取此数据的正确方法吗?

按时间排序的每组 SQL 平均金额

java - 使用 Maven Plugin 参数值作为另一个参数的默认值

java - 随机播放方法会导致重复模式吗?

java - 如何从哈希表中删除特定日期的数据

java - Spring中如何按一个字段查询并按另一个字段排序?

java - Spring Boot 构建良好但抛出 javax.naming.NameNotFoundException : remaining name: env/jmx/runtime when running