2010-03-01 3 views
0

하나의 트랜잭션에 여러 개의 엔티티를 삽입/업데이트하려했지만 사용할 수 없습니다. 항상 IllegalArgumentException을 throw합니다.Google 앱 엔진의 트랜잭션 삽입물

나는 이런 식으로하고 싶었다.

Transaction tx = pm.currentTransaction(); 
tx.begin(); 

for(int i=0;i<10;i++) { 
    SampleEntity entity = new SampleEntity(i); 
    pm.makePersistent(entity); 
} 

tx.commit(); 

가능하지 않은 경우 해결 방법이 있습니까? 감사합니다. .

+1

예외를 throw하는 행은 무엇입니까? 스택 추적을 제공 할 수 있습니까? – cletus

+0

안녕하세요, cletus, 아래 stacktrace 게시했습니다. 감사 – Link

+0

javax.jdo.JDOFatalUserException : 잘못된 인수 org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException (NucleusJDOHelper.java:344) 에서 org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent (JDOPersistenceManager.java:674) 에서 조직에서. datanucleus.jdo.JDOPersistenceManager.makePersistent (JDOPersistenceManager.java:694) – Link

답변

1

Transactions에있는 문서, 특히 엔티티 그룹 섹션을 참조하십시오.

엔티티 그룹은 데이터 저장소의 동일한 노드에 여러 엔티티를 저장하도록 App Engine에 지시합니다. 그렇지 않으면 트랜잭션이 여러 노드 간 통신을 필요로하고 거의 제대로 수행 할 수 없습니다.

엔티티 그룹은 주로 부모 - 자식 관계에 사용되므로 하위 엔티티를 부모와 동일한 트랜잭션에서 업데이트 할 수 있습니다.

+0

안녕하세요. ImJasonH 님, 답장을 보내 주셔서 감사합니다. 레코드 당 1MB를 저장하려고했습니다. 위의 예에서, 총 10MB (각 엔티티 1MB)를 삽입하려고합니다. im이 부모 자식 관계를 사용하려면 전체 부모 및 자식 엔터티가 1MB로 제한되어 있습니까? 10MB의 데이터를 삽입 할 방법이 없습니까? – Link

+0

엔티티 크기 제한이 엔티티 또는 엔티티 그룹에 의한 것인지 잘 모르겠습니다.이 문제에 대해서는 문서가 명확하지 않습니다. 왜 그것을 시도하고 그것이 작동하는지 확인하지? –

+0

나는 그것을 시도하고 그것은 작동한다 :) 나에게 올바른 길을 인도 해 주셔서 고마워. – Link

관련 문제