Estoy usando JPA (EclipseLink) y Spring. Digamos que tengo una entidad simple con un ID generado automáticamente:
@Entity
public class ABC implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
// ...
}
En mi clase DAO, tengo un método de inserción que llama persist()a esta entidad. Quiero que el método devuelva el ID generado para la nueva entidad, pero cuando lo pruebo, devuelve en su 0lugar.
public class ABCDao {
@PersistenceContext
EntityManager em;
@Transactional(readOnly=false)
public int insertABC(ABC abc) {
em.persist(abc);
// I WANT TO RETURN THE AUTO-GENERATED ID OF abc
// HOW CAN I DO IT?
return abc.id; // ???
}
}
También tengo una clase de servicio que envuelve el DAO, si eso hace una diferencia:
public class ABCService {
@Resource(name="ABCDao")
ABCDao abcDao;
public int addNewABC(ABC abc) {
return abcDao.insertABC(abc);
}
}