Java Web アプリケーションのプロジェクトがあり、Glassfish の機能を PHP (nuSOAP) に出力する予定です。
mySQL 、すべてのテーブル、リレーションシップ、主キー、および外部キーで BD を作成しました。
その後、NetBeans、New Project -> Java Web APP を開きます。
私が行った手順は、
最初にHibernate Configuration Wizardを作成し、次にHibernate Reverse Engineering Wizardを作成し、次にデータベースからHibernateマッピングファイルとPOJOを作成し、最後にHibernateUtil(名前付き接続)を作成します
私のエンティティは: クラブ 1 対多 グレード 1 対多 チーム 1 対多 プレーヤー
これで、すべてのエンティティが Java プロジェクトに含まれるようになりました。そして、Club の DAO を作成しました。
public List<Club> listClubs(){
try{
session.beginTransaction();
List<Club> listClub = (List<Club>)session.createQuery("from Club").list();
session.getTransaction().commit();
session.close();
return listClub;
}catch(Exception e){
System.out.println("Erro ao listar os clubes");
System.out.println(e.getMessage());
}
return null;
}
その後、すべてのクラブのリストを出力する WebService を作成したいと考えています。
@WebMethod(operationName = "listAllClubs")
public List<Club> listAllClubs() {
ClubDAO pdo = new ClubDAO();
List<Club> temp = pdo.listClubs();
System.out.println("[WS:::]Tamanho do array devolvido: " + temp.size());
return temp;
}
そして、glassfish ページで WebService をテストした後、次のエラーが発生します。
> Service invocation threw an exception with message : null; Refer to the server log for more details
サーバーログを取得すると、次のように表示されます。
> SEVERE: failed to lazily initialize a collection of role: pt.dai.entities.Club.grades, no session or session was closed
私はすでにインターネットでこのエラーについて検索しています。エンティティのxmlをdefault-lazy = 'false'に変更することはすでに解決していますが、これがすべてのクラブ情報をPHPに返すと、nuSOAPが大量のデータで壊れます..
lazzyLoad を使用してデータを WebService に送信するにはどうすればよいですか?
助けてくれてありがとう!