You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by ebaxt <eb...@broadpark.no> on 2008/03/28 10:08:13 UTC

Toplink+openEJB = TransactionRequiredException

Hi.

I'm using embedded openEJB to test some Session Beans during my build. The
project I'm working on uses toplink JPA provider, so I want to use topLink
with openEJB.

Problem: 
I want to add a new Taxon:

@Entity
@Table(name = "TAXA")
public class Taxa implements Serializable, Comparable<Taxa> {
    private static final long serialVersionUID = 1L;
    @TableGenerator(
        name = "Taxa_Gen", 
        table = "ID_GEN", 
        pkColumnName = "GENERATOR_NAME", 
        valueColumnName = "GENERATOR_VALUE", 
        pkColumnValue = "Taxa_Gen")
    @Id
    @GeneratedValue(strategy=GenerationType.TABLE, generator="Taxa_Gen")
    @Column(name = "RECORD_ID", nullable = false)
.
.
}

My unitTest basicly calls a Session Facade, the facade delegates the
em.persist(..) to an EAO (DAO):

public class Sp2kServiceBean implements Sp2kService {

    @EJB
    TaxaEAO taxaEAO;

  @Override
    public Taxa createTaxa(Long parentId, String name) {
    ... //Creates new Taxa
    taxaEAO.create(newTaxa);
.
.
}

TaxaEAOBean looks like this:

@Stateless
public class TaxaEAOBean implements TaxaEAO {

    @PersistenceContext(name="sp2k")
    private EntityManager em;

    @Override
    public void create(Taxa taxa) {
        em.persist(taxa);
        /em.flush();
    }
.
.
}

The problem started when I tried to add GenerationType.TABLE, the test ran
without error, but the Taxon was not added to the DB. So i tried em.flush()
in TaxaEAOBean, which resulted in the following error:

The transaction has been marked rollback only because the bean encountered a
non-application exception :javax.persistence.TransactionRequiredException : 
Exception Description: No transaction is currently active

Any ideas?
Does the use of toplink with openEJB need any more configuration than
changing the provider in persistence.xml?

I also tried it with openJPA, but it doesn't seem to use the table generated
primary key.
-- 
View this message in context: http://www.nabble.com/Toplink%2BopenEJB-%3D-TransactionRequiredException-tp16348298p16348298.html
Sent from the OpenEJB Dev mailing list archive at Nabble.com.


Re: Toplink+openEJB = TransactionRequiredException

Posted by David Blevins <da...@visi.com>.
Hi Erik,

I think my answer to your question on the users@openejb list covers  
this question as well.  Let me know if that doesn't do the trick.

-David


On Mar 28, 2008, at 2:08 AM, ebaxt wrote:
>
> Hi.
>
> I'm using embedded openEJB to test some Session Beans during my  
> build. The
> project I'm working on uses toplink JPA provider, so I want to use  
> topLink
> with openEJB.
>
> Problem:
> I want to add a new Taxon:
>
> @Entity
> @Table(name = "TAXA")
> public class Taxa implements Serializable, Comparable<Taxa> {
>    private static final long serialVersionUID = 1L;
>    @TableGenerator(
>        name = "Taxa_Gen",
>        table = "ID_GEN",
>        pkColumnName = "GENERATOR_NAME",
>        valueColumnName = "GENERATOR_VALUE",
>        pkColumnValue = "Taxa_Gen")
>    @Id
>    @GeneratedValue(strategy=GenerationType.TABLE,  
> generator="Taxa_Gen")
>    @Column(name = "RECORD_ID", nullable = false)
> .
> .
> }
>
> My unitTest basicly calls a Session Facade, the facade delegates the
> em.persist(..) to an EAO (DAO):
>
> public class Sp2kServiceBean implements Sp2kService {
>
>    @EJB
>    TaxaEAO taxaEAO;
>
>  @Override
>    public Taxa createTaxa(Long parentId, String name) {
>    ... //Creates new Taxa
>    taxaEAO.create(newTaxa);
> .
> .
> }
>
> TaxaEAOBean looks like this:
>
> @Stateless
> public class TaxaEAOBean implements TaxaEAO {
>
>    @PersistenceContext(name="sp2k")
>    private EntityManager em;
>
>    @Override
>    public void create(Taxa taxa) {
>        em.persist(taxa);
>        /em.flush();
>    }
> .
> .
> }
>
> The problem started when I tried to add GenerationType.TABLE, the  
> test ran
> without error, but the Taxon was not added to the DB. So i tried  
> em.flush()
> in TaxaEAOBean, which resulted in the following error:
>
> The transaction has been marked rollback only because the bean  
> encountered a
> non-application  
> exception :javax.persistence.TransactionRequiredException :
> Exception Description: No transaction is currently active
>
> Any ideas?
> Does the use of toplink with openEJB need any more configuration than
> changing the provider in persistence.xml?
>
> I also tried it with openJPA, but it doesn't seem to use the table  
> generated
> primary key.
> -- 
> View this message in context: http://www.nabble.com/Toplink%2BopenEJB-%3D-TransactionRequiredException-tp16348298p16348298.html
> Sent from the OpenEJB Dev mailing list archive at Nabble.com.
>
>