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.