2016-12-03 1 views
0

私は、スプリングデータJPAを使用して、春のプロジェクトに取り組んでいます。なぜこの "ErrorCounter - Path for join!"を取得しているのですか? 2つのテーブル間の結合を含むHQLクエリを実行しようとしていますか?

は、だから私は、これら2エンティティクラスを持っている:

宿泊施設の部屋表す1)ルーム

@ManyToOne 
@JoinColumn(name = "id_room_tipology_fk", nullable = false) 
private RoomTipology roomTipology; 

@Entity 
@Table(name = "room") 
public class Room implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id") 
    private Long id; 

    @ManyToOne 
    @JoinColumn(name = "id_accomodation_fk", nullable = false) 
    private Accomodation accomodation; 

    @ManyToOne 
    @JoinColumn(name = "id_room_tipology_fk", nullable = false) 
    private RoomTipology roomTipology; 

    @Column(name = "room_number") 
    private String number; 

    @Column(name = "room_name") 
    private String name; 

    @Column(name = "room_description") 
    @Type(type="text") 
    private String description; 

    @Column(name = "max_people") 
    private Integer maxPeople; 

    @Column(name = "is_enabled") 
    private Boolean isEnabled; 

    // CONSTRUCTOR, GETTER AND SETTER METHODS 
} 

あなたはこのクラスを見ることができるように、このフィールドが含まれています多くのRoomインスタンスをRoomTipologyインスタンスにリンクします。

2)その後、私はRoomTipologyのエンティティクラスを持っている:

@Entity 
@Table(name = "room_tipology") 
public class RoomTipology implements Serializable{ 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id") 
    private Long id; 

    @Column(name = "tipology_name") 
    private String name; 

    @Column(name = "tipology_description") 
    private String description; 

    @Column(name = "time_stamp") 
    private Date timeStamp; 

    @OneToMany(mappedBy = "roomTipology") 
    private List<Room> rooms; 

    @OneToOne(mappedBy = "roomTipology") 
    private RoomRate roomRate; 

    // CONSTRUCTOR, GETTER AND SETTER METHODS 
} 

は、その後、私はRoomTipologyエンティティクラスのこのリポジトリCLASを持っている、のようなもの:私はを返すメソッドを実装先の

を特定の部屋IDに関連付けられた部屋のアドバイスだから私はこのようにdonw持っ

SELECT * 
FROM `room_tipology` rt 
INNER JOIN room r 
ON rt.id = r.id_room_tipology_fk 
WHERE r.id = 7 

@Repository 
@Transactional(propagation = Propagation.MANDATORY) 
public interface RoomTipologyDAO extends JpaRepository<RoomTipology, Long> { 

    @Query("from RoomTipology rt JOIN Room r ON rt.id = r.id_room_tipology_fk WHERE r.id = :roomId") 
    RoomTipology getInfoByRoomId(Long id); 

} 

問題は私のapplictionを実行すると、私はこのエラーメッセージを得ることです:

だから私はこのクエリの HQLバージョンを実装したいです
[ERROR] 2016-12-03 11:47:41 [org.hibernate.hql.internal.ast.ErrorCounter.reportError(ErrorCounter.java:73)] [main] ErrorCounter - Path expected for join! 
antlr.SemanticException: Path expected for join! 
    at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:385) [hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3903) [hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3689) [hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3567) [hibernate-core-4.3.11.Final.jar:4.3.11.Final] 

..................................................................... 
..................................................................... 
..................................................................... 
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [from com.betrivius.domain.RoomTipology rt JOIN Room r ON rt.id = r.id_room_tipology_fk WHERE r.id = :roomId] 
    at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:91) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
..................................................................... 
..................................................................... 
..................................................................... 

なぜですか?なにが問題ですか?私は何が欠けていますか?この問題を解決するにはどうすればよいですか?

答えて

関連する問題