ene :
Quiero insertar los valores de los productos que son de tipo arrayList en la base de datos, pero estoy recibiendo este error "java.lang.String cannot be cast to model.Product"
. El problema es con el elenco que hice en servlet. este es su código:
String buyer = request.getParameter("buyer");
List<String> prodlist = Arrays.asList(request.getParameterValues("product"));
List<Product> prodmlist = (List<Product>) (List<?>) prodlist;
Bill bill = new Bill(buyer, prodmlist);
myDAO.add(bill);
y este es el método que se rellenará
public static void add(Bill bill) {
Connection cnx;
try {
cnx = Connect.getConnection();
String req = "insert into bil values (?,?)";
PreparedStatement st = cnx.prepareStatement(req);
st.setString(1, bill.getBuyer());
for (Product prod : bill.getProduct()) {
st.setString(2, prod.getName());
st.addBatch(); // add the statement to the batch
}
st.executeUpdate();
cnx.commit();
}
David Brossard
En su código:
List<String> prodlist = Arrays.asList(request.getParameterValues("product"));
// Need to convert here...
List<Product> prodmlist = (List<Product>) (List<?>) prodlist;
Es necesario para convertir explícitamente List<String>
a List<Product>
. Hacer algo a lo largo de las líneas de:
List<Product> products = new ArrayList<Product>();
for (String s: prodList){
Product p = new Product();
p.setName(s);
products.add(p);
}
Ahora, estoy haciendo la suposición de que tiene un regulador para establecer el nombre de producto. Puede ser que tiene un constructor que puede pasar el nombre de (y guardar una línea de código).