即使指定了架构,关系也不存在

Relation doesn't exist even with schema specified

尝试使用 JPA 发出请求时出现错误。

我在我的 class 实体中指定了 table 所在的架构:

@Data 
@NoArgsConstructor 
@AllArgsConstructor 
@Entity
@Table(schema = "dwp_schema")
public class Corridor {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id_corridor;
    private Integer id_floor;
    private String orientation;

}

当我在我的存储库中执行特定请求时:

public interface CorridorRepository extends JpaRepository<Corridor, Integer> {
    @Query(value = "select * from corridor c inner join floor f on f.id_floor=c.id_floor INNER JOIN building b on f.id_building = b.id_building WHERE b.building_name=?1 AND f.floor_number=?2" ,nativeQuery = true)
    List<Corridor> getCorridorsByFloor(String building_name, int floor);
}

我在 Postgres 中有以下错误:

org.postgresql.util.PSQLException: ERROR: relation "corridor" does not exist

有人有想法吗?

谢谢。

尝试在 table 名称之前写入架构名称:

    @Query(value = "select * from dwp_schema.corridor c inner join floor f on f.id_floor=c.id_floor INNER JOIN building b on f.id_building = b.id_building WHERE b.building_name=?1 AND f.floor_number=?2" ,nativeQuery = true)

您需要在连接字符串中指定您的数据库和模式:

jdbc:postgresql://localhost:5432/dbname?currentSchema=dwp_schema

将模式名称放在实体声明中无论如何都不是一个好主意 - 您的 DBA 应该能够决定模式名称。