I recently used an EntityHome class to create a number of entites in a batch manner.
The following function is inside flightHome
public void batchCreateFlights() { Calendar cal = new GregorianCalendar(); cal.setTime(Utils.dateRound(batchFrom, true, Calendar.DATE)); while (cal.getTime().before(Utils.dateRound(batchTo, false, Calendar.DATE))) { if (cal.get(Calendar.DAY_OF_WEEK) == getWeekDay().getCalendarDay()) { FlightHome flightHome = new FlightHome(); // copy values off getInstance into flightHome.getInstance() //and generate some values flightHome.persist(); } cal.add(Calendar.DATE, 1); } }
However I got a null pointer exception because EntityHomes persist() uses an injected @Log which doesn't exist when EntityHome is not used as a seam component as above.
I solved it by overriding the relevant function without the @Log being used:
@Override protected void createdMessage() { getFacesMessages().add(new FacesMessage("Created flight no: "+getInstance().getFlightno())); }
EntityHome is only intended to be used as a Seam component.