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

组织。postgresql。util。PSQLException:错误:关系不存在PreparedStatement。executeQuery()

井礼骞
2023-03-14

由于一些奇怪的原因,hibernate生成的查询不适用于postgres,它告诉它无法找到关系/表,即使在dvdrent架构中有有效的表film_actor?这个答案没有帮助。

例外情况:

org.postgresql.util.PSQLException : ERROR : relation "dvdrental.film_actor" does NOT exist PreparedStatement.executeQuery () FAILED ! 

HQL公司

Query searchQuery = session.createQuery("select film from Film as film " +
                    "inner join film.actors  as a " +
                    "inner join film.categories as c " +
                    "where c.categoryId=:categoryId " +
                    "and film.language.id=:languageId " +
                    "and film.releaseYear=:releaseYear " +
                    "and a.actorId=:actorId");

生成SQL

SELECT
    film0_.film_id AS film_id1_8_,
    film0_.description AS descript2_8_,
    film0_.language_id AS languag12_8_,
    film0_.last_update AS last_upd3_8_,
    film0_. LENGTH AS length4_8_,
    film0_.rating AS rating5_8_,
    film0_.release_year AS release_6_8_,
    film0_.rental_duration AS rental_d7_8_,
    film0_.rental_rate AS rental_r8_8_,
    film0_.replacement_cost AS replacem9_8_,
    film0_.special_features AS special10_8_,
    film0_.title AS title11_8_
FROM
    dvdrental. PUBLIC .film film0_
INNER JOIN dvdrental.film_actor actors1_ ON film0_.film_id = actors1_.film_id
INNER JOIN dvdrental. PUBLIC .actor actor2_ ON actors1_.actor_id = actor2_.actor_id
INNER JOIN dvdrental.film_category categories3_ ON film0_.film_id = categories3_.film_id
INNER JOIN dvdrental. PUBLIC .category category4_ ON categories3_.category_id = category4_.category_id
WHERE
    category4_.category_id = 1
AND film0_.language_id = 1
AND film0_.release_year = 2016
AND actor2_.actor_id = 2;

此查询工作正常:

SELECT
    *
FROM
film f
INNER JOIN film_actor fa ON f.film_id = fa.film_id
LIMIT 100;

基于胶片实体注释的映射:

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "film_actor", catalog = "dvdrental", joinColumns = {
            @JoinColumn(name = "film_id", nullable = false, updatable = false) },
            inverseJoinColumns = { @JoinColumn(name = "actor_id",
                    nullable = false, updatable = false) })
    public Set<Actor> getActors() {
        return actors;
    }

    public void setActors(Set<Actor> actors) {
        this.actors = actors;
    }

解决方案/黑客:

评论/*曲库="dvdrent"*/后,问题消失了。

共有1个答案

尉迟韬
2023-03-14

您必须指定架构,而不是曲库。链接

在生成的SQL-Query中,您搜索一个表dvdrent。PUBLIC。电影,我假设只有dvdrental.film存在。

更新了基于胶片实体注释的映射:

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "film_actor", schema= "dvdrental", joinColumns = {
        @JoinColumn(name = "film_id", nullable = false, updatable = false) },
        inverseJoinColumns = { @JoinColumn(name = "actor_id",
                nullable = false, updatable = false) })
public Set<Actor> getActors() {
    return actors;
}

public void setActors(Set<Actor> actors) {
    this.actors = actors;
}
 类似资料:
  • 我有一个使用spring boot和postgres的应用程序。我在尝试创建用户时遇到此错误。 当我在我的数据库上运行此查询时,我得到相同的错误: 但如果我将其更改为: 它起作用了。 如何在我的spring boot应用程序上配置它? pom中的依赖项。xml: application.properties: 我的实体: 我从表单中调用此操作: 这是我的控制器: 记录错误的验证器: UserSer

  • 问题内容: 我正在尝试在PostgreSQL 8.4.2 DB上运行hibernate模式。每当我尝试运行一个简单的Java代码,例如: 我收到以下错误: 由于我将选项hibernate.show_sql选项设置为true,因此可以看到hibernate尝试运行以下SQL命令: 实际上,它至少应运行以下命令: 有谁知道我需要进行哪些更改才能使Hibernate为PostgreSQL生成正确的SQL

  • 我使用PostgreSQL 10、Spring Boot 2.2.7.Release和pgAdmin 4来实现Postgres GUI 我有以下实体类: 我已经使用GUI PGADMIN4为ID列“TB03_TABLE_A_SEQ”创建了表“TB03_TABLE_A”和序列 我哪里出问题了?请救命! 提前感谢!

  • 我在heroku上创建了java(Spring)应用程序,并将postgreql连接到它。当我在应用程序上发出请求时,日志显示 WARN 4-[io-14883-exec-3]o . h . engine . JDBC . SPI . sqlexception helper:SQL错误:0,SQLState:42p 01 app[web.1]:2016-12-11 12:13:09.942错误4-

  • 我正在使用java web服务(apache axis)和JDBC连接来连接postgres数据库,以获取数据。但突然间,在大多数情况下,我都遇到了

  • 我得到了这个例外 在下面的方法中,身份验证是使用ldap完成的。如果发生不正确的用户名或密码或连接异常,将捕获以下异常之一。 我的问题是这个。我将异常发送到下面的方法,并将异常转换为String并将其添加到我的实体类中。 这是我的实体类: 但是当操作发生时,我得到以下异常。 我研究了一些东西,上面说是这样的。 但我不明白的是,我在这里得到的值是空的?我知道在调试时,Entity类会将异常消息放在l