I noticed that EntityNotFoundException is thrown when I've got a proxy and I try to persist it after I've used find() which has determined that entity doesn't exist.
Item item = em.getReference(Item.class, 123); if (!em.find(Item.class, 123)) { em.persist(item); }
PS. This might not even be allowed by the spec but I can't imagine why it wouldn't be.