public boolean equals(Object obj) { // a NPE can occurs, but I don't expect equals to be used before pk is set if (obj != null && obj instanceof Parent) { return id.equals(((Parent) obj).id); } else { return false; } }