0

私のJavaコード:

private EntityManagerFactory emf = Persistence.createEntityManagerFactory("cassandra_pu");
private EntityManager em = emf.createEntityManager();
while(condition){
em.merge(objects[i]);
}

例外なく正常に実行できますが、データベース テーブルは更新されません。それは、すべてのトランザクションがキューに入れられているためだと思います。もしそうなら、トランザクションをすぐにコミットする方法はありますか?

4

1 に答える 1

0

cassandra はトランザクションをサポートしていないため、zookeeper のような調整サーバーがない限り、トランザクションは発生しません。PlayOrm は特に JPA に準拠していませんでした。noSQL は、文字列のリストまたは LocalDate のリストの @NoSqlEmbedded タグと同様に、はるかに多くのことを実行できるからです。これらは、RDBMS には幅の広い行がないため、RDBMS の JPA がサポートできないものです。とにかく、PlayOrm は別のオプションですが、トランザクションは行いませんが、JPA では実行できない現在使用されている多くの noSQL パターンをサポートすることを目的としています。

ただし、PlayOrm と JPA の両方で、flush を呼び出す必要があります。 フラッシュする呼び出しがありませんか?

ああ、PlayOrm はルック アンド フィールが JPA と非常によく似ていますが、より多くの noSQL 固有の機能を備えていることに注意してください (さらに、必要に応じて結合も行います)。

于 2012-10-26T20:52:58.510 に答える