错误:FROM中的子查询必须具有别名

时间:2018-02-07 11:16:32

标签: sql postgresql hibernate jpa

我正在努力解决这个问题:

  

引起:org.postgresql.util.PSQLException:错误:FROM中的子查询   必须有一个别名Indice:例如,FROM(SELECT ...)[AS] foo。   位置:15

查询如下所示:

Query query = em.createQuery("select u from UserClass as u where u.id.id = :id")

我在这里找到的唯一棘手的事情是u.id.id,UserClass类正在使用en EmbeddedId:

@Entity
@Table(name = "TABLE_USER")
public class UserClass implements {

    @EmbeddedId
    private UserClassPK id;

...

}

这是UserClassPK类:

@Embeddable
public class UserClassPK {

    @Column(name = "ID_UTILISATEUR")
    private String id;
}

除此之外,我不知道为什么会出现这个错误。

编辑:添加了MyClassPK类。选择“User”作为示例的实体名称也是一个糟糕的选择,我将其更改为UserClass。

1 个答案:

答案 0 :(得分:0)

刚刚找到解决方案!问题来自生成子查询的query.getSingleResult()的解释。

我只需要在src / main / resources / spring-jpa.xml中更改JPA使用的方言:

<context:property-placeholder
        location="classpath*:jpa-postgresql.properties"
        ignore-unresolvable="true" />

使用jpa-postgresql.properties文件:

hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
jpa.dialect=org.springframework.orm.jpa.vendor.HibernateJpaDialect
jpa.vendor.adapter=HibernateJpaVendorAdapter