0

2 つのテーブル website_availability と status_codes があります。これらの間には外部キー関係があります。status_codes は親テーブルです。休止状態を使用しています。参加後にこれらのテーブルの値の「リスト」が必要です。このコードに従っています。

List<WebsiteAvailability>list=new ArrayList<WebsiteAvailability>
String selquery="select w.statusCode,w.updateTime,w.statusCodes.statusCodeValue from  WebsiteAvailability w,StatusCodes s where w.statusCodes.statusCode=s.statusCode and w.url=?";
//here hibernate generates the POJO classes and these are having foriegn key relation so     WebsiteAvailability is having private StatusCodes statusCodes.So I am accessing statuscodevalue of statuscodes table using w.statusCodes.statusCodeValue.
PreparedStatement ps=con.prepareStatement(selquery);
ps.setString(1,selUrl);
rs=ps.executeQuery();
while(rs.next())
{
list.add(new     WebsiteAvailability(rs.getString("statusCode"),rs.getTimestamp("updateTime"),rs.getString("statusCodeValue")));
}
return list;

}

まず第一に、休止状態で結果セットを使用できます.これに代わるものはありますか? プレースホルダー setString().and executeQuery() に preparestatement を使用してリストを取得する必要があります。値のリストが必要です。どうすれば取得できますか。空のリストを取得しています。エラーは何ですか?

org.hibernate.QueryException: プロパティ statusCode を解決できませんでした -----WebsiteAvailability---

休止状態のマッピング ファイルで、大文字と小文字の区別を確認しました。まだプロパティの例外を解決できませんでした

4

1 に答える 1

1

JDBC ステートメントを使用して、SQL クエリとして Hibernate エンティティで作業している HQL クエリを実行しようとしています。それは意味がありません。HQL クエリは、Hibernate セッションによって実行されます。JDBC によるものではありません。Hibernate を使用している場合、JDBC はもう必要ありません (バッチなどの生の JDBC パフォーマンスが必要な場合を除いて)。

HQL クエリの実行に関するドキュメントを参照してください。クエリが正しくないように見えるため、クエリも修正する必要があります。w.statusCodeと も含まれていますw.statusCodes。また、単純に暗黙的または明示的な結合を使用する代わりに、等価ステートメントを使用して結合を行い、2 つのエンティティから選択します。それらはドキュメントでも説明されています。

于 2013-05-22T13:27:25.337 に答える