2016-05-09 4 views
0

JoinTableを注釈として作成しました。そのため、そのデータベーススキーマのエンティティがありません。私はこのエラーを取得する理由をされていること:@jointable annotationで作成されたスキーマをjpaで選択できません

「によって引き起こさ:例外[EclipseLinkの-0](Eclipseの永続性サービス - 2.6.1.v20150605-31e8258):org.eclipse.persistence.exceptions.JPQLException 例外説明:問題 [41、65]状態フィールドパス 'it.itineraryTraveller_id'を解決できません。[it.itineraryTraveller_id]:[it.itineraryTraveller_id =有効な型に変換します。 "

私はjointableを作成ここで

: `

@Entity 
public class itineraryTraveller implements Serializable { 

private static final long serialVersionUID = 1L; 
@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private Long Id; 
private String departureLocation; 
private String arrivalLocation; 
@ManyToMany(fetch = FetchType.LAZY) 
//@JoinTable(name="ITINERARYTRAVELLER_FLIGHT") 
@JoinTable(name = "itinerary_flight", 
    joinColumns = @JoinColumn(name = "itineraryTraveller_id"), 
    inverseJoinColumns = @JoinColumn(name = "flightEntity_id") 
) 
private List<flightEntity> flights; 

そして私は、私は上記のようにエラーメッセージが表示されますことjointableを選択しようとします。ここでの問合せ:このような

Query query= em.createQuery("SELECT it FROM Itinerary_flight it WHERE it.itineraryTraveller_id = :id"); 
     query.setParameter("id", listOfItineraries.get(i).getId()); 
     List<flightEntity> list= query.getResultList(); 
+0

実際にこのエンティティのスキーマを作成しましたか? TABLEは存在しますか?そのメッセージはそれがそうでないことを意味するからです。いくつかの注釈を入れるだけで、スキーマを作成せずにスキーマを作成することはありません。ステッププロセス –

+0

が存在します。私がWorkbenchに行くと、私はテーブルが作成され、適切にいっぱいになるのを見ることができます。しかし、私がスキーマを作成した唯一の場所は、@ジョイント可能なアノテーションです。だから私はそのテーブルのエンティティを持っていない – pquin92

+0

@ NeilStockton私は問題がクエリがentityManagerで呼び出されていると思う(しかし、この結合テーブルはエンティティを持っていません)。では、エンティティマネージャなしでスキーマをどのようにクエリできますか? – pquin92

答えて

0

JPQLは飛行

SELECT ti FROM TravellerItinerary ti JOIN ti.flights fl WHERE fl.id = :id 

を持っているすべての旅程を見つけるだろうが、その後、あなたはそれが

ことはできません以上のことを言うためにので、関連するエンティティを投稿していません
関連する問題