TomEEからJBossへのDTOビジネスの移行を実現しました。トランザクションTransactionImple ActionStatus.ABORTEDはすでにロールバックされていました
@NamedQueries({
@NamedQuery(name = "common.plagebusiness.plage.getAllPlages", query = "SELECT p FROM Plage p ORDER BY p.plageRgMax, p.plageCReseau") })
@Entity
@Table(name = "PLAGE")
public class Plage {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idPlage")
private Integer idPlage;
@Column(name = "rgMin")
private String plageRgMin;
このインタフェースでは:
@Local
public interface PlagePersistenceManager {
public void importPlages(List<DetailFH55> listeEnregDetail) throws PlageBusinessException, ParseException;
}
と実装:
@Stateless(name = "common.plagebusiness.PlagePersistenceManager")
public class PlagePersistenceManagerImpl implements PlagePersistenceManager {
private static final Logger LOGGER = Logger.getLogger(PlagePersistenceManager.class);
@PersistenceContext(unitName = "PlageBusiness")
private EntityManager em;
@Override
public void importPlages(final List<DetailFH55> listeEnregDetail) throws PlageBusinessException, ParseException {
LOGGER.debug("Entree dans importPlages");
if (null != listeEnregDetail) {
LOGGER.info("Debut Delete");
// suppression des plages
this.deleteAllPlages();
LOGGER.info("Fin Delete et Debut Insertion en bdd");
for (final DetailFH55 myEnreg : listeEnregDetail) {
// insertion des nouvelles plages
final Plage plage = this.convertEnregDetailToPersist(myEnreg);
this.em.persist(plage);
}
LOGGER.info("Fin Insertion en bdd");
}
LOGGER.debug("Sortie dans importPlages");
}
}
残念ながら、em.persist iは、動作しません
私は、このエンティティを持っていますこの除外がありました:
Caused by: javax.transaction.RollbackException: JBAS014585: Transaction 'TransactionImple < ac, BasicAction: 0:ffff0a48268b:4bc8a0e:56f01b76:18 status: ActionStatus.ABORTED >' was already rolled back
私はフォーラムでJbossのtimeOutのために読んでいました。私は、JBossの設定を変更したくないので、私はまだ、このコードで何が間違って同じ例外を...
@org.jboss.annotation.ejb.TransactionTimeout(10000000)
public void importPlages(final List<DetailFH55> listeEnregDetail) throws PlageBusinessException, ParseException
を入れてみました。
方法deleteAllPlagesは含まれています
@Override
public int deleteAllPlages() throws PlageBusinessException {
final Query query = this.em.createNativeQuery("DELETE FROM `PLAGE`");
return query.executeUpdate();
}
を私はまだ(プラージュ)を持続し、同じ例外の後に)((フラッシュを入れてみました)とクリア。
final Plage plage = this.convertEnregDetailToPersist(myEnreg);
this.em.persist(plage);
this.em.flush();
this.em.clear();
Thxs。
'deleteAllPages()'メソッドは何をしますか?トランザクションが中断された可能性があります。 – metlos
@metlosメソッドdeleteAllPlagesを追加します – Kikou
@aribeiro私はdeleteAllPages関数をコメントアウトしました。同じ結果が同じ例外です – Kikou