0

データベースからデータを表示しようとしましたが、500 エラー ページ javax.ejb.EJBException が表示されます。なぜ機能しないのかわかりません。多分私のBeanが間違っていますか?私を助けてください。

Glassfish ログの警告: 警告: 警告: EJB5184: EJB SearchBean の呼び出し中にシステム例外が発生しました。メソッド: public java.util.Collection com.stark.logic.SearchBean.searchByNumber(int)

@Entity
@Table(name = "buy")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Buy.findAll", query = "SELECT b FROM Buy b"),
@NamedQuery(name = "Buy.findByIdBuy", query = "SELECT b FROM Buy b WHERE b.idBuy = :idBuy"),
@NamedQuery(name = "Buy.findByNumberBuy", query = "SELECT b FROM Buy b WHERE b.numberBuy = :numberBuy")})
public class Buy implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id_buy")
private Integer idBuy;
@Basic(optional = false)
@NotNull
@Column(name = "number_buy")
private int numberBuy;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "buy")
private Product product;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "buy")
private Client client;
//getters & setters

EJB Bean:

@Stateless
@LocalBean
public class SearchBean {

@PersistenceUnit
EntityManagerFactory emf;
EntityManager em;

public Collection searchByNumber(int number){
    em = emf.createEntityManager();
    Query searchQuery = em.createNamedQuery("Buy.findByNumberBuy");
    searchQuery.setParameter("number_buy", number);
    List list = new ArrayList();
    list = searchQuery.getResultList();

    return list;
}
}

サーブレット:

@EJB
private SearchBean searchBean;


@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws    ServletException, IOException {
    PrintWriter out = response.getWriter();
    response.setContentType("text/html;charset=UTF-8");

    String num = request.getParameter("number");
    int number = Integer.parseInt(num);
    List list = new ArrayList();
    list = (List) searchBean.searchByNumber(number);
    Iterator it = list.iterator();
    while(it.hasNext()){
        Buy buy = (Buy) it.next();
        out.println(buy.getProduct());
    }
}
4

1 に答える 1