私は問題に直面しており、何がうまくいかないのか分かりません。 cenary:Hibernate 5 + Non JTAデータソース:オブジェクトが格納されていません
- Hibernateは5
- Apache Tomcatの9
- JSF 2
ありません春。私はこの問題がSpringの使用で実際に起こっているのを見たので、これは重要ですが、これは私の場合ではありません。
データソースはTomcat上で正しく構成されており、Hibernateは新しいEntityごとにテーブルと更新スキーマも正しく作成します。
問題は、新しいエンティティを永続化しようとすると何も起こりません。
javax.persistence.TransactionRequiredException:進行中のトランザクションがない
それから私は、「フラッシュ()」と呼んで...しかし、私は私がアクティブな何のトランザクションを持っていないというエラーを持っている含めるしてみましたトランザクション要求に関連した問題のようですが、私も試してみました:
- は法上の「@Transactional」注釈を含めます。
- には、クラスの "@Transactional"アノテーションが含まれています。
- "beginTransaction()"コールでトランザクションを開始しますが、次にNullPointerを取得しました。
だから私は何をするのか分かりません。
私の関連コードが表示されます。この問題を解決するのに手伝ってもらえますか?
persistence.xmlファイル:
<persistence-unit name="hospitalPU" transaction-type="RESOURCE_LOCAL"> <description> Persistence unit for Hibernate </description> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <non-jta-data-source>java:comp/env/jdbc/hospitalDatasource</non-jta-data-source> <properties> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> <property name="hibernate.format_sql" value="true" /> <property name="hibernate.default_catalog" value="hospital" /> <property name="hibernate.connection.datasource" value="java:comp/env/jdbc/hospitalDatasource"/> <property name="hibernate.id.new_generator_mappings" value="false" /> </properties> </persistence-unit>
マイエンティティ:私のマネージドBeanの
@Entity(name="Dominio")
@Table(name="Dominio")
public class Dominio implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Integer id;
here goes another fileds and getters/setters...
、私が持っている:
@PersistenceUnit
private EntityManagerFactory emf;
そして:
protected synchronized EntityManager getEntityManager() {
if (emf == null) {
emf = Persistence.createEntityManagerFactory("hospitalPU");
}
return emf.createEntityManager();
}
正常に動作するようですが、問題はここに起こる:これにより
を、何も起こりませんし、何の例外occours。ただ、何も起こりません。これにより
getEntityManager().persist(getDominio());
、私が持っている "javax.persistence.TransactionRequiredExceptionを:進行中のトランザクションがない":私が間違っているのは何
getEntityManager().persist(getDominio());
getEntityManager().flush(); //exception occours here!
?すべてのあなたのために事前にありがとう!
ご回答ありがとうございます@Mayank。 しかし、私のために働いていない。私はこの勧告の後に同じエラーがありました: https://gist.github.com/imanoleizaguirre/3819393 2番目と3番目のリンクは、Springまたはそれ以前のバージョンのJPA /休止状態。とにかくありがとうございます。 –