J'utilise JPA (EclipseLink) et Spring. Disons que j'ai une entité simple avec un identifiant 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()
cette entité. Je veux que la méthode renvoie l'ID généré pour la nouvelle entité, mais lorsque je la teste, elle renvoie à la 0
place.
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);
}
}