データベースからデータを表示しようとしましたが、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());
}
}