2017-06-15 27 views
0

私は、データを取り込もうとしている4つのテーブルのそれぞれについて、この問題以外にこの問題を明確にする方法はよくわかりません。ただ空です。どのものが空になるのか予測できません。それは、1と2、またはわずか3、または1つのテーブル以外のすべてである可能性があります。テーブルの1つが実装されていない場合、私はrollback()catchブロックで終わります。時々彼らはすべて働きます。これはある種のスレッド中断と関係しています。下のコードと例外を考えれば、何がうまくいかないでしょうか?オブジェクトの作成と保存のためのスレッド "Thread-10"の例外java.lang.IllegalStateException

スレッド:

new Thread(() -> { 
     /* Loop through the "primary key" incidentNumber to create list of objects in memory */ 
     for (int i = 0; i < incidentNumberList.size(); i++) { 
       Incident incident = new Incident(); 

       /* Save Incidents to Local H2 Database */ 
       if (!(targetDateList.get(i).isEmpty())) { 
        try { 
         String targetDate = DateUtil.formatTargetDate(targetDateList.get(i)); 
         String timeRemaining = DateUtil.getTimeRemaining(targetDateList.get(i)); 

         try { 
          // Make sure no transactions are currently running to avoid JPA Error 
          if (!entityManager.getTransaction().isActive()) { 
           // Begin saving Incident objects to H2 
           entityManager.getTransaction().begin(); 
           incident.setIncidentNumber(incidentNumberList.get(i)); 
           incident.setSummary(summaryList.get(i)); 
           incident.setRequestId(requestIdList.get(i)); 
           incident.setPriority(priorityList.get(i)); 
           incident.setLastModifiedDate((lastModifiedDateList.get(i))); 
           incident.setStatus(statusList.get(i)); 
           incident.setTargetDate(targetDate); 
           incident.setTimeRemaining(timeRemaining); 
           incident = entityManager.merge(incident); 
           entityManager.getTransaction().commit(); 
          } 

         } catch (Exception e) { 
          entityManager.getTransaction().rollback(); 
         } 

        } catch (ParseException e) { 
         e.printStackTrace(); 
        } 
       } 

       /* Create 4 separate lists for each priority level, i.e. Low --> Critical, to populate each of the 4 TableViews */ 
       if (priorityList.get(i).equals(priorityType)) { 
        switch (priorityType) { 
         case "Low": 
          incidentObjectListGreen.add(incident); 
          break; 
         case "Medium": 
          incidentObjectListYellow.add(incident); 
          break; 
         case "High": 
          incidentObjectListOrange.add(incident); 
          break; 
         case "Critical": 
          incidentObjectListRed.add(incident); 
          break; 
        } 

        Incident finalIncident = incident; 
        Platform.runLater(() -> dataPriority.add(finalIncident)); 
       } 

      } 
    }).start(); 

例外:

Exception in thread "Thread-11" java.lang.IllegalStateException: 
Exception Description: No transaction is currently active 
    at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.rollback(EntityTransactionImpl.java:176) 
    at app.controller.TableViewController.lambda$organizeTable$2(TableViewController.java:432) 
    at java.lang.Thread.run(Thread.java:745) 
Exception in thread "Thread-10" java.lang.IllegalStateException: 
Exception Description: No transaction is currently active 
    at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.rollback(EntityTransactionImpl.java:176) 
    at app.controller.TableViewController.lambda$organizeTable$2(TableViewController.java:432) 
    at java.lang.Thread.run(Thread.java:745) 
Exception in thread "Thread-9" java.lang.IllegalStateException: 
Exception Description: No transaction is currently active 
    at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.rollback(EntityTransactionImpl.java:176) 
    at app.controller.TableViewController.lambda$organizeTable$2(TableViewController.java:432) 
    at java.lang.Thread.run(Thread.java:745) 

インシデントエンティティ:

@Entity 
@Table(name = "INCIDENT") 
public class Incident implements Serializable { 

    @Id 
    @Column(name = "INCIDENTNUMBER") 
    private String incidentNumber; 

    @Column(name = "SUMMARY") 
    private String summary; 

    @Column(name = "REQUESTID") 
    private String requestId; 

    @Column(name = "PRIORITY") 
    private String priority; 

    @Column(name = "STATUS") 
    private String status; 

    @Column(name = "ASSIGNEE") 
    private String assignee; 

    @Column(name = "LASTMODIFIEDDATE") 
    private String lastModifiedDate; 

    @Column(name = "TARGETDATE") 
    private String targetDate; 

    @Column(name = "TIMEREMAINING") 
    private String timeRemaining; 

    public String getRequestId() { 
     return requestId; 
    } 

    public void setRequestId(String requestId) { 
     this.requestId = requestId; 
    } 

    public String getIncidentNumber() { 
     return incidentNumber; 
    } 

    public void setIncidentNumber(String incidentNumber) { 
     this.incidentNumber = incidentNumber; 
    } 

    public String getSummary() { 
     return summary; 
    } 

    public void setSummary(String summary) { 
     this.summary = summary; 
    } 

    public String getPriority() { 
     return priority; 
    } 

    public void setPriority(String priority) { 
     this.priority = priority; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public String getAssignee() { 
     return assignee; 
    } 

    public void setAssignee(String assignee) { 
     this.assignee = assignee; 
    } 

    public String getLastModifiedDate() { 
     return lastModifiedDate; 
    } 

    public void setLastModifiedDate(String lastModifiedDate) { 
     this.lastModifiedDate = lastModifiedDate; 
    } 

    public String getTargetDate() { 
     return targetDate; 
    } 

    public void setTargetDate(String targetDate) { 
     this.targetDate = targetDate; 
    } 

    public String getTimeRemaining() { 
     return timeRemaining; 
    } 

    public void setTimeRemaining(String timeRemaining) { 
     this.timeRemaining = timeRemaining; 
    } 
} 

スタックトレース:

} catch (Exception e) { 
     entityManager.getTransaction().rollback(); 
    } 

問題#1 - あなたは例外を潰している:

java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 
java.lang.IllegalArgumentException: Object: [email protected] is not a known entity type. 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4222) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496) 
    at app.controller.TableViewController.lambda$organizeTable$3(TableViewController.java:430) 
    at java.lang.Thread.run(Thread.java:745) 

答えて

3

私はあなたの問題がここにあると思います。あなたはメッセージを印刷せず、スタックトレースを記録しません。何もない。あなたはただ問題を診断するために使用できるすべての情報を捨ててください。

問題#2 - あなたはExceptionを捕まえています。それはあまりにも広いです。

問題3 - rollbackを呼び出す時点までに、ロールバックするトランザクションはないようです。

問題#1と#2を修正すると、問題#3の原因が明らかになると思います。

+0

右。それを指摘してくれてありがとう。私はstacktraceを追加し、私の質問を更新しました。それを見て... – santafebound

+0

はい。そして、あなたの問題の根本的な原因を説明します。 *その*例外メッセージに関するQ&Aを検索してみてください。 –

関連する問題