How do I insert many entities into a Play! Employment?

In my application I have to simulate various situations for analysis. Thus insert a (very) large amount of lines into a database. (We're talking about a very large amount of data...several billion)

Model

@Entity
public class Case extends Model {

    public String url;
}

Job

public class Simulator extends Job {

    public void doJob() {

         for (int i = 0; i !=) {

             // Somestuff

             new Case(someString).save();
         }
    }
}

After half an hour, there is still nothing in the database . But debug traces show Play inserts some stuff. I suspect it is some kind of cache.

I've tried about everything :

Model.em().flush();

Changes nothing.

Model.em().getTransaction().commit();

throws TransactionRequiredException occured : no transaction is in progress

Model.em().setFlushMode(FlushModeType.COMMIT);
Model.em().setFlushMode(FlushModeType.AUTO);

Changes nothing.

I've also tried @NoTransaction annotations everywhere :

  • Class & functions in Controller
  • Class Case
  • Overriding save method in Model
  • Class & functions of my Job

Getting quite desperate. Every kind of advice is welcome.

EDIT : After a little research, the first row appears in database. The associated ID is about 550.000. That means about half a million rows are somewhere in between my application and database.

Try

em.getTransaction().begin();
em.persist(model);
em.getTransaction().commit();

You can't commit a transaction before you begin it.

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章