关于使用本机查询

时间:2016-11-16 07:14:40

标签: jpa transactions nativequery

任何人都可以帮助我。这是我花了很多钱的问题 时间就可以了。我正在使用JTA' S BMT交易,我将要执行 同一交易中的3个步骤:

  1. 使用entitymanager;
  2. 将一行插入表中
  3. 如果表存在本机查询,则删除该表;
  4. 使用本机查询创建表;我故意为本机查询编写了一个错误的sql,并进行了回滚。
  5. 同一个交易中的这三个步骤,但步骤1始终是成功的。我想知道JPA的交易是否不支持原生查询(" drop table和create table")。提前谢谢你们!!像这样的代码:

    try {
        tx.begin();
        table1 t1 = new table1();
        t1.setC1(c1);
        t1.setC2(c2);
        EntityManager em = emf.createEntityManager();
        em.persist(t1);
        Query query1= em.createNativeQuery("drop table if exists table2").executeUpdate();
        Query query2= em.createNativeQuery("xxxxxxxxxxxxxxxx").executeUpdate();
        tx.commit();
        rt = true;
    } catch (Exception e) {
        try {
            tx.rollback();
        } catch (Exception e1) {
            PUB.log(e, PUB.getLineInfo());
        }
    }
    

    这是声明:

    @Stateless
    @TransactionManagement(TransactionManagementType.BEAN)
    public class MainSessionBean implements MainSessionBeanRemote {
        @PersistenceUnit(unitName = "CC2016JPA2")
        static EntityManagerFactory emf;
        @Resource
        UserTransaction tx;
    

0 个答案:

没有答案