Sto usando JPA (EclipseLink) e Spring. Supponiamo che io abbia un'entità semplice con un ID generato automaticamente:
@Entity
public class ABC implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
// ...
}
Nella mia classe DAO, ho un metodo di inserimento che chiama persist()questa entità. Voglio che il metodo restituisca l'ID generato per la nuova entità, ma quando lo provo, restituisce 0invece.
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; // ???
}
}
Ho anche una classe di servizio che avvolge il DAO, se questo fa la differenza:
public class ABCService {
@Resource(name="ABCDao")
ABCDao abcDao;
public int addNewABC(ABC abc) {
return abcDao.insertABC(abc);
}
}