Значение параметра Ошибка преобразования '52' для 'нулевого конвертера' [дубликат]

На этот вопрос уже есть ответ здесь:

Значение параметра Ошибка преобразования для 'нулевой конвертер - Зачем мне нужен конвертер в JSF? 2 ответа

Я новичок в JSF, и я пытался сохранить данные из формы, которая использует h: selectOneMenu, чтобы получить категорию продукта. H: selectOneMenu заполняется из БД, однако при попытке сохранить продукт в БД я получаю сообщение об ошибке: Значение параметра Ошибка преобразования '52' за 'нулевой конвертер, Я рассмотрел похожие проблемы в StackOverflow и онлайн-учебниках, но я все еще получаю сообщение об ошибке.

Это xhtml:


                    
                    
                

Это контроллер продукта:

@Named
@RequestScoped
public class ProductController {

    @EJB
    private ProductEJB productEjb;
    @EJB
    private CategoryEJB categoryEjb;

    private Product product = new Product();
    private List productList = new ArrayList();

    private Category category;
    private List categoryList = new ArrayList();

    public String doCreateProduct()
    {
        product = productEjb.createProduct(product);
        productList = productEjb.findAllProducts();
        return "listProduct";
    }

    @PostConstruct
    public void init()
    {
        categoryList = categoryEjb.findAllCategory();
        productList = productEjb.findAllProducts();
    }        

    // Getters/Setters and other methods omitted for simplicity

Это упрощенный EJB для простоты:

   @Stateless
    public class ProductEJB{

        @PersistenceContext(unitName = "luavipuPU")
        private EntityManager em;

        public List findAllProducts()
        {
            TypedQuery query = em.createNamedQuery("findAllProducts", Product.class);
            return query.getResultList();
        }

        public Product createProduct(Product product)
        {
            em.persist(product);
            return product;
        }    

    }

Это продукт Entity, упрощенный для простоты:

@Entity
@NamedQueries({
    @NamedQuery(name="findAllProducts", query = "SELECT p from Product p")
})
public class Product implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id @GeneratedValue(strategy= GenerationType.AUTO)
    private int product_id;
    private String name;
    private String description;
    protected byte[] imageFile;
    private Float price;
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateAdded;
    @ManyToOne    
    private Category category_fk;
    @ManyToOne
    private SaleDetails saleDetails_fk;

Это обновленный конвертер, который я использую:

@ManagedBean
@FacesConverter(value="categoryConverter")
public class CategoryConverter implements Converter{

    @PersistenceContext
    private transient EntityManager em;

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        return em.find(Category.class, new Integer(value));
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {

        Category category;
        category = (Category) value;
        return String.valueOf(category.getCategory_id());

    }

}

Код был обновлен с проблемы Orignal, теперь код отлично работает.

Ответы на вопрос(2)

Ваш ответ на вопрос