私はHibernate 4を使用しており、テーブルのすべての行を単純にリストしたいと考えています。私が見つけたすべてのソリューションは、 "tablenameから"のようなものを使うことを提案していますが、文字列のテーブル名のハードコーディングを避けたいと思います。HQLなしでテーブルのすべての行を取得していますか?
答えて
あなたは、例えば
session.createCriteria(MyEntity.class).list();
を使用することができます。
HQLはテーブル名を使用しません。エンティティ名を使用します。エンティティ名は(デフォルトで)クラス名です。だから、
String hql = "select a from " + TheEntity.class.getSimpleName() + " a";
を使用することができますしかし、私はここで型安全性に対する読みやすさを好む、とあなたはとにかくあなたのクエリのテストを自動化している必要があります
String hql = "select a from TheEntity a";
を使用します。
はい、クエリがテストされていますが、あなたの第2の解決策はまだクエリがリファクタリングによって考慮されないことを意味します。 –
はい、失敗したテストでキャッチされます。 –
私は最終的に正しい結果を得ることが重要であることに同意しますが、プロジェクトが現在初期段階にあり、毎週リファクタリングが行われています。これを適切にサポートすることは、現時点では非常に重要です。 –
//休止クラス
public class CommonDAO<T> {
Session session = null;
Transaction transaction = null;
private Class<T> clazz;
public CommonDAO(){ //constructor
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
Type genericSuperclass = this.getClass().getGenericSuperclass();
if (genericSuperclass instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) genericSuperclass;
Type type = pt.getActualTypeArguments()[0];
clazz = (Class<T>) type;
}
}
public T listById(Object id) {
T object = null;
try {
object = (T) session.get(clazz, (Serializable) id);
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
}
//ユーザークラス
public class UserDAO extends CommonDAO<UserMaster> { // Here UserMaster is pojo
public UserDAO() {
super();
}
public static void main(String ar[]) {
UserMaster user = new UserDAO().listById(1); // 1 is id
System.out.println(user.getUserName());
}
}
- 1. テーブルを結合して、左からすべての行を取得し、一致しない行を含むすべての行を右に取得する
- 2. テーブル行をクリックしてすべてのセルの値を取得
- 3. MySQLのテーブルの行数を取得していますか?
- 4. 、すべてのテーブルの行を取得し、私は次のサイトからすべてのテーブルのデータをこすりしようとしていますBeautifulSoup
- 5. テーブルからすべてのデータを取得していますか?スウィフト、パース?
- 6. テーブルとソートのすべてを取得しますか?
- 7. asp.netのDataTableからすべての行を取得します
- 8. Datagridviewはすべての行から値を取得します
- 9. テーブルのすべてのフィールドで完全に一致しないすべてのレコードを取得するJOIN
- 10. Postgresテーブルからすべての行を取得
- 11. Azureテーブル:すべての行キー+特定の列をテーブル全体から取得しますか?
- 12. MySQLテーブルのすべての行を取得してリストボックスに入れる
- 13. ページ上のすべてのテーブルをカウントし、IDを取得して配列を実行します
- 14. MySQLテーブルのリストを取得し、すべてのテーブルのコードを実行します
- 15. javascriptですべてのテーブル行を取得
- 16. すべての値を取得するテーブル行の入力ボックス
- 17. setFetchBatchSizeメッセージ内のすべての行を取得するテーブル
- 18. EntityFramework外部テーブルがすべてのデータを取得していません
- 19. jqueryを使用してテーブル行のすべてのセルの値を取得します
- 20. GridViewはすべての行のデータを取得します
- 21. jqgridのすべての編集行を取得します
- 22. すべての変更を取得していない
- 23. クエリがすべてのmysql_fetch_assocsを取得していない
- 24. 2つのテーブルからデータを取得していますか?
- 25. S3オブジェクトのすべてのバージョンを取得しています
- 26. laravelのすべてのユーザーを取得しています。5.2
- 27. Laravelのテーブルからすべての行を(ソフト削除なしで)取得する方法は?
- 28. のはなぜmariaDB 10.1でINFORMATION_SCHEMAでInnoDBテーブルを取得していますか?
- 29. スタートアップアイテムをすべて取得していますか?
- 30. オフセットをフェッチしてすべての行を取得する
どのように私はこれを並べ替えることができますか? –
session.createCriteria(MyEntity.class).addOrder(Order.asc( "age"))。list(); – slonik
このタイプを安全にする方法はありますか? – Hassan