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

未找到Spring JPA查询架构

方宁
2023-03-14

我创建了查询来根据日期间隔和房间类型搜索酒店的可用房间。当我运行此查询时,我得到以下错误:

组织。h2.jdbc。JdbcSQLException:未找到模式“R”;SQL语句:

有什么问题吗?

公共接口RoomRepository扩展JpaRepository{

    @Query(value = "
                SELECT Room r 
                FROM Room join r.bookings b    
                WHERE not ((b.beginDate >= :initDate And b.beginDate <= :endDate) or (b.beginDate >= :initDate And b.endDate <= :endDate) or (b.beginDate <= :initDate and b.endDate >= :endDate) and b.approved = true and r.roomType = :roomType)"
            , nativeQuery=true)
    public List<Room> findWithDates(@Param("initDate") Date initDate, @Param("endDate") Date endDate, @Param("roomType") long roomType);
}

共有2个答案

轩辕晔
2023-03-14

如果您使用本机查询,则不应使用命名参数。模式R是生成SQL中表名的前缀。模式前缀通常添加到数据库连接中URL参数指定的表中。在您的情况下,它是不同的,因为您没有使用任何模式连接。要使用本机SQL查询,您应该使用@NamedNativeQuery,如

本机查询是通过y和注释或注释定义的

@NamedNativeQuery(
    name="complexQuery",
    query="SELECT Room r 
                FROM Room join r.bookings b    
                WHERE not ((b.beginDate >= ? And b.beginDate <= ?) or (b.beginDate >= ? And b.endDate <= ?) or (b.beginDate <= ? and b.endDate >= ?) and b.approved = true and r.roomType = ?)",
    resultClass=Room.class
)
public class Romm { ... }

Query query = em.createNamedQuery("complexQuery", Room.class);
query.setParameter(1, initDate);
query.setParameter(2, endDate);
query.setParameter(3, initDate );
query.setParameter(4, endDate);
query.setParameter(5, initDate );
query.setParameter(6, endDate);
query.setParameter(7, roomType);

Room room = (Room) query.getSingleResult();

您可以在Java持久化/查询中找到更多示例

裴宜春
2023-03-14

从Room join r bookings b中选择Room r

您的别名不应出现在select语句中

从房间r中选择r。。。。。。。。。。

如果你选择了所有的东西,你也不需要“选择”。

从房间r...

应该足够了

 类似资料:
  • 我有一个名为user的实体,如下所示: 我还有一个用户摘要类,它旨在返回以进行分页和排序: 这与所有其他实体一起似乎在h2中很好地初始化,从控制台我看到如下内容: 和 甚至: 现在,我已经设置了控制器、服务和存储库... 控制器: 服务:公共接口UserService扩展了UserDetailsService{ 存储库:公共界面UserRepository扩展了JpaRepository{ 最后,

  • 在我通过“pod update”更新我的Firebase之后,我得到了如下错误: 在这里我的播客文件: 有人知道这个错误吗? 我寻找GoogleToolboxForMac和Firebase之间的关系,但我只得到了一点信息。 仅供参考,我使用Swift 2.3和Firebase 3.8.0。 我将非常感谢您能提供的任何帮助。谢谢!

  • 我试图在一台新计算机上运行一个项目,但是我发现了这个错误< code > framework not found dtx profiler 。我已经阅读了这篇文章,但是我没有任何Pods.framework文件,也没有< code >链接的框架和库。我不知道该怎么办。我还尝试了< code>pod反集成安装。 PS。 我打开了.xcworkspace文件,而不是另一个 清洁安装的项目 多次删除派生

  • 在我的Spring Boot应用程序中有POJO,下面是它的样子: 现在我想选择所有与给定值相关的方式是POJO的成员。 所以这是我的查询

  • 我试图运行一个Laravel查询,选择一个出现多次的特定字段,我得到了下面的错误。 “SQLSTATE[42S22]:未找到列:1054”“having子句”“中的未知列”“no_of_service”“(SQL:select count(*)作为内部连接在上的按分组,具有 我希望看到多次出现的字段。

  • 问题内容: 在包含 Objective-C 和 Swift 代码的自定义框架中,Swift编译器会引发以下错误: 问题答案: 为Framework目标启用设置时,将发生这种情况。 将其设置为将解决该错误。 恕我直言,这是Swift编译器中的错误,我已经向Apple提出了警告。 参见rdar:// 21038443