2

Open JPA エンティティがあり、多対多の関係を正常に接続しています。現在、テーブル全体を正常に取得していますが、実際にはそのテーブルの ID のみが必要です。後でデータベースを呼び出して、必要なエンティティを再構築する予定です (プログラムの流れに従って)。ID (またはそのテーブルの 1 つの列) のみが必要です。
1) エンティティ Bean、またはエンティティ Bean を呼び出すために使用するステートレス セッション Bean でこれを制限しようとする必要があります。テーブル全体ではなく、テーブルから ID を取得しますか? これまでオンラインで調べたところ、これを行う方法がわかりません。ですから、これを行う方法はないと思います。3) 単に戻り値を操作するだけの場合、必要な ID リストのみをユーザーに返す別のクラスを作成してユーザーに返す必要がありますか?

ここでは完全に間違っている可能性がありますが、見た目からすると、JPA を使用してこれを行う簡単な方法はないと思います。エンティティ Bean の代わりにカスタム オブジェクトをユーザーに返す必要があります (このカスタム オブジェクト現在のようにテーブル全体ではなく、ID のみを保持します)

何か考えがあります...これは本当に関係ないと思いますが、人々は常にコードを求めているので、どうぞ...

@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="QUICK_LAUNCH_DISTLIST",
        joinColumns=@JoinColumn(name="QUICK_LAUNCH_ID"),
        inverseJoinColumns=@JoinColumn(name="LIST_ID"))
private List<DistributionList> distributionlistList;

現在、レコードのコレクション全体を取得する方法。私はIDだけが欲しいことを覚えておいてください...

    try
    {
        //int daSize = 0;
        //System.out.println("Testing 1.2..3...! ");
        qlList = emf.createNamedQuery("getQuickLaunch").getResultList();            
    }

これがエンティティ Bean の呼び方です。これは、プログラムを使用してエンティティ Bean に似たカスタム オブジェクトを作成する必要がある場所だと考えています (ただし、テーブル全体ではなく ID のみを持ち、そこに ID を配置しようとします。

あなたの考えは何ですか?

ありがとう

4

2 に答える 2

2

この問題に対する最善の解決策を見つけたと思います。
このリンクが答えになります: 私の他のスタックオーバーフローの答えの投稿

しかし、リンクをクリックするのが面倒な人のために、基本的に @ElementCollection 属性を使用しました...

@ElementCollection(fetch=FetchType.EAGER)
        @CollectionTable(name="QUICK_LAUNCH_DISTLIST",joinColumns=@JoinColumn(name="QUICK_LAUNCH_ID"))
        @Column(name="LIST_ID")
private List<Long> distListIDs;

それでできました。

于 2012-05-04T16:53:08.907 に答える
1

あなたのquickLaunchクラスで次のようなものが欲しいようです:

@Transient
public List<Integer> getDistributionListIds () {
    List<Integer> distributionListIds = new LinkedList<Integer>();
    List<DistributionList> distributionlistList = getDistributionlistList();
    if (distributionlistList != null) {
        for (DistributionList distributionList : distributionlistList)
            distributionListIds.add(distributionList.getId());
    }
    return distributionListIds;
}

ゲッター/セッターの名前と DistributionList の ID のタイプを少し推測する必要がありました。しかし、基本的に、JPA はすでにすべての関係を適切に処理しているため、関連するオブジェクトから必要な値を取得するだけです。

于 2012-05-03T16:58:58.460 に答える