简体   繁体   English

获取org.hibernate.hql.internal.ast.QuerySyntaxException:Java中内部联接查询的联接路径

[英]Getting org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join for inner join query in java

StringBuilder queryString = new StringBuilder(" FROM Organisation org ")
                .append(" INNER JOIN Abonne a ")
                .append(" WHERE org.idOrganisation = a.organisation ");

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! 引起原因:org.hibernate.hql.internal.ast.QuerySyntaxException:预期加入的路径!

I am getting path expected for the INNER JOIN Abonne a WHERE org.idOrganisation = a.organisation order by org.code ] 我正在为INNER JOIN Abonne获得期望的路径,其中org.idOrganisation = org.code的a.organization订单]

Abonne Entity The abonne entity has the organisation foreign key @ Join table id_org Abonne实体Abonne实体具有组织外键@联接表id_org

    @Entity
    @Table(name = "T_ABONNE")
    public class Abonne {
        private static final long serialVersionUID = -7500240243978256087L;

        @Id
        @Column(name = "ID_ABONNE", columnDefinition = "CHAR(32)")
        @GeneratedValue(generator = "uuid")
        @GenericGenerator(name = "uuid", strategy = "uuid")
        private String idAbonne;

        @Column(name = "LIB_NOM", length = 200, nullable = false)
        private String nom;

        @Column(name = "BOO_ACTIF", nullable = false)
        private Boolean actif;

        @Column(name = "DAT_DATE_EXPIRATION", length = 10)
        @Type(type="utcType")
        private Date dateExpiration;

        @Column(name="NO_MAXIM_DE_UTILISATEURS", length = 5000)
        private Integer noMaxUsers;

        @ManyToOne
        @JoinColumn(name="ID_LANGUAGE", nullable=false)
        @Index(name = IndexNameUtil.T_ABONNE_ID_LANGUAGE_IDX)
        @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
        private Language language;

        @ManyToOne
        @JoinColumn(name="ID_THEME", nullable=false)
        @Index(name = IndexNameUtil.T_ABONNE_ID_THEME_IDX)
        @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
        private Theme theme;

        @ManyToOne
        @JoinColumn(name="ID_FONT", nullable=false)
        @Index(name = IndexNameUtil.T_ABONNE_ID_FONT_IDX)
        private Font font;

        @ManyToOne(fetch=FetchType.EAGER)
        @JoinColumn(name="ID_ORG", nullable=false, updatable=false)
        @Index(name = IndexNameUtil.T_ABONNE_ID_ORG_IDX)
        @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
        private Organisation organisation;
}

Organisation Entity This is the organisation Entity which has the idOrganisation 组织实体这是具有idOrganisation的组织实体

@Table(name = "T_ORGANISATION")
public class Organisation {

    private static final long serialVersionUID = 5348078630581306005L;

    public static final String COLUMN_ID_ORGANISATION = "ID_ORGANISATION";

    @Id
    @Column(name = COLUMN_ID_ORGANISATION, columnDefinition = "CHAR(32)")
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid")
    private String idOrganisation;

    @Column(name = "LIB_NOM", nullable = false, length=250)
    private String nomOrganisation;

    @Column(name = "LIB_CODE", length=100)
    private String code;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="ID_FICHIER")
    @Index(name = IndexNameUtil.T_ORGANISATION_ID_FICHIER_IDX)
    @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
    private File logo ;

} }

This one should work:- 这应该工作:

StringBuilder queryString = new StringBuilder(" FROM Abonne a ")
            .append(" INNER JOIN a.organisation org ")
            .append(" WHERE org.idOrganisation = a.organisation ");

Change your query as follows: 如下更改查询:

StringBuilder queryString = new StringBuilder("select a.organisation FROM Abonne a ")

When you use a.organistion it will create join in hibernate on its own. 当您使用a.organistion时,它将自行在休眠状态下创建连接。
Or 要么

Add List in organistion to have bi directional mapping and use the following query. 在组织中添加列表具有双向映射,并使用以下查询。

 @Table(name = "T_ORGANISATION")
    public class Organisation {

        private static final long serialVersionUID = 5348078630581306005L;

        public static final String COLUMN_ID_ORGANISATION = "ID_ORGANISATION";

        @Id
        @Column(name = COLUMN_ID_ORGANISATION, columnDefinition = "CHAR(32)")
        @GeneratedValue(generator = "uuid")
        @GenericGenerator(name = "uuid", strategy = "uuid")
        private String idOrganisation;

        @Column(name = "LIB_NOM", nullable = false, length=250)
        private String nomOrganisation;

        @Column(name = "LIB_CODE", length=100)
        private String code;

        @OneToOne(fetch = FetchType.LAZY)
        @JoinColumn(name="ID_FICHIER")
        @Index(name = IndexNameUtil.T_ORGANISATION_ID_FICHIER_IDX)
        @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
        private File logo ;

@OneToMany(mappedBy="organisation")
List<Abonne> abonnes;

StringBuilder queryString = new StringBuilder(" FROM Organisation org ")
                .append(" JOIN org.abonnes a ")
                .append(" WHERE org.idOrganisation = a.organisation.idOrganisation ");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 org.hibernate.hql.internal.ast.QuerySyntaxException:预期加入的路径 - org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join JPA查询联接错误:org.hibernate.hql.internal.ast.QuerySyntaxException:联接所需的路径 - JPA query join error: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join org.hibernate.hql.internal.ast.QuerySyntaxException:预期加入示例的路径 - org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join exeption 错误 SpringBoot 引起:org.hibernate.hql.internal.ast.QuerySyntaxException:加入的路径 - Error SpringBoot Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join org.hibernate.hql.internal.ast.QuerySyntaxException无效的路径 - org.hibernate.hql.internal.ast.QuerySyntaxException Invalid path org.hibernate.hql.internal.ast.QuerySyntaxException - org.hibernate.hql.internal.ast.QuerySyntaxException org.hibernate.hql.internal.ast.QuerySyntaxException:无效的路径:JPQL 自定义查询中的“e.id” - org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path: 'e.id' in JPQL custom query 获取 java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:运行查询后出现意外令牌 - Getting java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token after running query 获取嵌套异常为org.hibernate.hql.ast.QuerySyntaxException的错误:预期加入的路径 - getting error that nested exception is org.hibernate.hql.ast.QuerySyntaxException: Path expected for join 线程“main”中的异常 java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException 获取此 Excdption - Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException getting this Excdption
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM