Hallo,
Ich habe einen Validator in dem ich überprüfen will ob ein Objekt mit dem gleichen Namen bereits exisitiert. Dazu muss ich eine DB Abfrage mit Hibernate/JPA machen. Bisher habe ich auf CategoryEM zugegriffen und das mit Contains überprüft. Jetzt ist allerdings CategoryEM immer NULL und ich kann mir überhaupt nicht erklären warum. Der Validator sieht so aus:
@FacesValidator("Get.Validator.CategoryValidator")
public class CategoryValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
FacesMessage msg;
if (!(value instanceof String)) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, String.valueOf(value.getClass()), null));
}
Category category = new Category((String) value);
if (CategoryEM != null) {
if (this.CategoryEM.findAll().contains(category)) {
msg = new FacesMessage(Utility.getApplication().evaluateExpressionGet(
FacesContext.getCurrentInstance(), "#{msg['category.error.exists']}", String.class));
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
@EJB
private CategoryFacadeLocal CategoryEM;
/**
* Get the value of CategoryEM
*
* @return the value of CategoryEM
*/
public CategoryFacadeLocal getCategoryEM() {
return CategoryEM;
}
/**
* Set the value of CategoryEM
*
* @param CategoryEM new value of CategoryEM
*/
public void setCategoryEM(CategoryFacadeLocal CategoryEM) {
this.CategoryEM = CategoryEM;
}
@Local
public interface CategoryFacadeLocal {
void create(Category category);
void edit(Category category);
void remove(Category category);
Category find(Object id);
List<Category> findAll();
List<Category> findRange(int[] range);
int count();
}
Von Netbeans generierte Klasse:
@Stateless
public class CategoryFacade extends AbstractFacade<Category> implements CategoryFacadeLocal {
@PersistenceContext(unitName = "wie-koche-ichPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public CategoryFacade() {
super(Category.class);
}
}
Ich habe auch schon probiert den Typ von CategoryEM von CategoryFacadeLocal auf CategoryFacade ab zu ändern, jedoch ist das Objekt immer NULL.
Kann mir jemand sagen was ich falsch mache?