由于一些奇怪的原因,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"*/
后,问题消失了。
您必须指定架构,而不是曲库。链接
在生成的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