0

私はC#からJavaに移行しています。これは実際に何かを書き込もうとする最初の試みであり、データレイヤーをセットアップしようとしていますが、.NETのLINQ to SQLのDataContextのようなものが欠けていると思います

Hibernate を使用してデータベースにクエリを実行しようとしていますが、何か不足しているようです。タイプ セーフなクエリのために Hibernate 4 と QueryDSL をダウンロードしました。

次に、postgreSQL データベースに接続し、Dali を使用して DAO オブジェクトを生成し (メニューでテーブルから JPA エンティティを選択したと思います)、必要なクエリを記述しましたが、どのオブジェクトに対してクエリを実行する必要があるかわかりません (接続マネージャーのようなもの)か何か?)

ここで何かが足りないと思います:

EmployeesRepository repo = new EmployeesRepository();
List<Employees> employees = repo.GetByName("Steve");
Employees s = employees.get(0);
String g = s.getName();

私のエンティティリポジトリ:

public class EmployeesRepository {

    public List<Employees> GetByName(String ename)
    {
        HibernateQuery qry = createQuery(employees);
        qry.where(employees.name.like(ename));
        return qry.list(employees);
    }

    private HibernateQuery createQuery(QEmployees employee)
    {
        return new HibernateQuery().from(employee);
    }
}

私は得ています:

java.lang.UnsupportedOperationException: デタッチされたクエリで利用可能なセッションがありません

4

1 に答える 1

2

クエリを実行する前に、休止状態のセッションを作成/開く必要があります。

例:

Session session = HibernateUtil.getSessionFactory().openSession();

クエリの実行が完了したら、閉じる必要があります。

session.close();

これがステップバイステップの例です。

注: 使用しているものと上記の例で説明したものとの間に休止状態のバージョンの不一致がある可能性があります。調整する必要がある場合があります。

于 2012-12-02T13:18:37.660 に答える