2017-03-16 9 views
0

データベースを管理するために、MySqlデータベース、JPAオブジェクト、およびEntityManagerFactoryをEclipseLinkで開発しています。すべてうまく動作しますが、私には問題があります。私のJPAオブジェクトのEntityManagerFactoryでオブジェクトを追加しました

一つは、だから、idフィールドは、私はデータベースに格納してEntityManagerFactoryによって自動生成されます。この

public class JPAObject1{ 
    @Id 
    @GeneratedValue 
    private int id; 
    @OneToMany(//things here) 
    List<JPAObject2> list1; 
    ... 
} 

のようなものです。 EMはEntityManagerのオブジェクトタイプJPAObject1を入力しAsumming:

em.getTransaction().begin(); 
em.persist(object); 
em.getTransaction().commit(); 
//house work closing things 

JPAObject1が正しく追加されて、私は、データベース内のすべてのフィールドを見ることができます。フィールドIDが検索操作を行うためのキーなので、私の質問は次のとおりです。 追加された瞬間にEntityManagerで最後に追加されたオブジェクトを取得する方法はありますか?

JPAObject1 idフィールドを外部キーとして使用するオブジェクトが他にもあります。オブジェクトをデータベースに追加するだけでそのフィールドが必要ですが、他のオブジェクトをリンクするにはそのフィールドが必要ですが、 JPAObjectsとCollectionの最後のものを取得します。したがって、いくつかのオブジェクトでは問題は発生しませんが、プロセス1が最後に追加されたfindAllを実行する前にデータベースに挿入して別のプロセスを挿入すると、コヒーレンスエラーが発生します。

私はそれをうまく説明したと思います。

ありがとうございます!

答えて

1

あなたは

Obejct en = new Obejct(); 
en.setxxx("My name"); 
em.persist(en); 
em.flush(); 
System.out.println(en.getId()); 

件のデータがデータベースに保存されていることをフラッシュ

+0

おかげで多くのことを !!!!:あなたがしたい場合は、plsは...日付、時刻などの列を追加し、クエリは次のようになります –

+0

いつでもようこそ。 –

1

注後genrated idがセットされ、このコードを使用することができ、一覧表示されませ。彼らはそのような命令や何かを持っていないので、あなたが最後に追加したものを手に入れることはできません。 「dateColumn DESC限界によってTable ORDER * FROM 1 SELECT」

+0

データが1つのセットとして保存されたことを知らず、データベース内の1つのオブジェクトだけでテストを行っていました。ありがとう –

関連する問題