J'utilise JPA (EclipseLink) et Spring. Disons que j'ai une entité simple avec un ID généré automatiquement :
@Entity
public class ABC implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
// ...
}
Dans ma classe DAO, j'ai une méthode d'insertion qui appelle persist()
sur cette entité. Je souhaite que la méthode renvoie l'ID généré pour la nouvelle entité, mais lorsque je la teste, elle renvoie à la place 0
.
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; // ???
}
}
J'ai également une classe de service qui enveloppe le DAO, si cela fait une différence :
public class ABCService {
@Resource(name="ABCDao")
ABCDao abcDao;
public int addNewABC(ABC abc) {
return abcDao.insertABC(abc);
}
}