小编xag*_*gyg的帖子

是不是应该与em.getTransaction()一致的多个事务?

当我执行:

public void beginTransaction() {
    em.getTransaction().begin();
}
Run Code Online (Sandbox Code Playgroud)

在以相同方式启动活动事务之后,我得到以下异常:

Exception Description: Transaction is currently active
java.lang.IllegalStateException: 
Exception Description: Transaction is currently active
        at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.begin(EntityTransactionImpl.java:45)
        at com.mysimpatico.memoplatform.persistence.Database.beginTransaction(Database.java:44)
        at com.mysimpatico.memoplatform.persistence.tests.PersistenceTest.setUp(PersistenceTest.java:39)
Run Code Online (Sandbox Code Playgroud)

底层DBMS是嵌入式apache derby,据我所知,它不支持来自不同JVMS的多个连接,但是支持并发事务.文档

此测试代码失败:

public <Entity> int getNo(final Class<Entity> entityClass) {
    final CriteriaBuilder qb = em.getCriteriaBuilder();
    final CriteriaQuery<Long> cq = qb.createQuery(Long.class);
    cq.select(qb.count(cq.from(entityClass)));
    final int ret = em.createQuery(cq).getSingleResult().intValue();
    return ret;
}

protected void insertWords(final List<String[]> expressionDefTriples, MUser usr, final MeaningsDatabase mengsDB) throws Exception {
    for (String[] expressionDefTriple : expressionDefTriples) {
        mengsDB.persistSynonyms(MeaningsDatabase.toEnumMap(expressionDefTriple, usr));
        testSynonymsPersistance(expressionDefTriple,mengsDB);
    } …
Run Code Online (Sandbox Code Playgroud)

java transactions derby eclipselink jpa-2.0

7
推荐指数
1
解决办法
8118
查看次数

添加到hashmap需要很长时间

在我的java程序中,我已经停留了几行,这需要花费太多时间(大约20秒),这对我来说似乎很奇怪.

这是线

 Map<URL, Integer> res2 = new HashMap<>();
 for (URL url : res) {
     res2.put(url, null);
 }
Run Code Online (Sandbox Code Playgroud)

哪个res定义如下:

List<URL> res = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

在我的程序中,res.size()〜= 1500

你知道我的问题可能来自哪里吗?

谢谢 !

java

6
推荐指数
1
解决办法
277
查看次数

标签 统计

java ×2

derby ×1

eclipselink ×1

jpa-2.0 ×1

transactions ×1