2

PersonIDPID)列を持つテーブルがいくつかあるという問題があります。

PID1対多のコレクションを使用して外部キーとしてを使用してこれらのエンティティを親エンティティから切り離し、JPAキャッシュの目的でEhCacheを使用したいと思います。

簡単そうに聞こえますが、問題は私が親エンティティを持っていないことです!私が親を持っていない理由は、私たちがレポートアプリケーションを書いているからであり、それPIDが私たちがメモを書くために使用しているものです。

私は実際には新しいテーブルを作成したくはなく、EhCache構成PIDの目的でを保存するだけです。JPA

エンティティなどを模倣できるかどうか疑問に思っていましたが、すべての検索で空白を描画しています。

4

1 に答える 1

0

「仮想」エンティティなどは存在しないため、Hibernate だけで探していることを実行することはできません。

Person2 つのクエリの上にある抽象化レイヤー (基本的にはクラスの DAO) で、コードで単純に実行することをお勧めします。次のようなものです。

private static Person lookupPerson(Session s, int pid) {
    List<Note> notes = s.createCriteria(Note.class).add(Restrictions.eq("pid", pid)).list();
    List<Event> events = s.createCriteria(Event.class).add(Restrictions.eq("pid", pid)).list();

    Person p = new Person(notes, events);
    return p;
}

private static Person savePerson(Session s, Person p) {
    for (Note note : p.getNotes()) {
        s.saveOrUpdate(note);
    } 

    for (Event event : p.getEvents()) {
        s.saveOrUpdate(event);
    } 
}
于 2013-03-13T16:55:15.510 に答える