0

データベースからデータを取得する必要があります。このために、私は次のようなコードを書きました

try{
   return (EmployeeImpl) em.createQuery(
      "select e from EmployeeImpl e " +
      "where e.empName = :employeeName " + 
          " and (e.eDate is null or e.eDate <=   :todaysDate )")
 .setParameter("employeeName", employeeName)
 .setParameter("todaysDate", todaysDate)
 .getSingleResult();
}catch(NoResultException exception){
     throw new NoResultException("Record not found");
}

有効なレコードを 1 つ返す必要があります。しかし、次のような例外を与えます

org.hibernate.util.JDBCExceptionReporter] トランザクションがアクティブではありません: tx=TransactionImple < ac, BasicAction: 0:ffff0a5308fa:126a:4fb36c77:559 status: ActionStatus.ABORT_ONLY >; - ネストされた throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: 0:ffff0a5308fa:126a:4fb36c77:559 status: ActionStatus.ABORT_ONLY >)

 org.hibernate.exception.GenericJDBCException: Cannot open connection

javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection

私のアプリケーションは、他の場所で CRUD 操作を実行できるため、データベースに接続できます。

この例外の考えられる理由は何ですか。

4

3 に答える 3

0

挿入、更新、または選択などのデータベース操作を実際に実行する前に、まずトランザクションを開始する必要があります (もちろん、セッション オブジェクトを取得した後)。そして、CRUD 操作を行う必要があります。クエリを実行する前に、トランザクションを開始していることを確認してください。

于 2012-05-16T19:15:08.460 に答える
0

その理由は明らかです:

org.hibernate.exception.GenericJDBCException: 接続を開けません

なんらかの理由で、投稿したコードは接続を取得できませんが、アプリケーションの他の部分 (投稿した内容によると) はうまく接続できます。接続を取得するための別の方法などを使用して、コードのこの部分が別の方法で構成されていないことを確認します。

于 2012-05-16T13:44:38.830 に答える