2017-07-10 5 views
0

私は、人々が参加者との旅行を挿入し管理するアプリケーションを開発しています。私はJPAを使用しており、参加エンティティのリストを含むTripエンティティを持っています。今では、DBのParticipationsテーブルにマップされた名前は持っていませんが、それを実行するEmployeeエンティティがあり、ParticipationエンティティにEmployee IDが含まれています。私が使用マネージャ法では、EJBメソッドは別のHashMapを返しますか?

public Map<Integer, String> getEmployeeNames(Trip trip) { 
    Map<Integer, String> employeeNames = new HashMap<Integer, String>(); 
    for (Participation participation : trip 
      .getParticipations()) { 
     Employee employee = jpaBean 
       .getEmployeeByID(participation.getEmployeeId()); 
     employeeNames.put(new Integer(employee.getEmployeeId() 
       .intValue()), 
       employee.getName()); 
    } 
    return employeeNames; 
} 

今:

は、私は、パラメータとしてトリップを取得し、従業員IDとのペアと自分の名前を含む地図を返すメソッドを持つEJB TripBeanの実装を書きました参加に過渡フィールドの文字列employeeNameを設定するには、このハッシュマップ(これは別のクラスではなく、同じEJBである):

Map<Integer, String> employeeNames = tripBean 
      .getEmployeeNames(trip); 
for (Participation participation : trip.getParticipations()) { 
    String employeeName = employeeNames.get(participation.getEmployeeId()); 
    participation.setEmployeeName(employeeName); 
} 

私は戻ってtripBean.getEmployeeNames(からマップを取得するときに私の問題は、ある)ことがあります私がgetEにいるときに見るものとは違うmployeeNamesメソッド:エントリが少なく、メソッドをまとめて見たものと一致しません。 私はいくつかのベストプラクティスに悩まされていると確信しています。

追加情報: - 唯一のユーザーがログインして私は私のローカルマシン上のエラーをデバッグので、私はそれが同時に同じクラスにアクセスして、他のユーザーに依存しないと思います。 - TripsとParticipationsを従業員とは異なる永続コンテキストで定義しました。私は、このような問題があった場所[OK]を

おかげ

答えて

0

は、私が見つけたそれらの間のJPA関係を作成、またはpostConstruct方法で参加してemployeeNameフィールドを設定することはできません:参加における社員はBigDecimal型のものであり、 Integerではないため、get()メソッドは何も見つかりませんでした。これは、問題を解決:

String employeeName = employeeNames.get(participation.getEmployeeId().intValue()); 

デバッグに私は私のEJBメソッドにまとめるものとは異なるハッシュマップを参照してくださいなぜ私はまだわかりませんが、この時点で、私はそれは異なる方法でデータをレンダリングするだけで、デバッガだと思います:/

関連する問題