Saya menggunakan JPA (EclipseLink) dan Spring. Katakanlah saya memiliki entitas sederhana dengan ID yang dibuat secara otomatis:
@Entity
public class ABC implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
// ...
}
Di kelas DAO saya, saya memiliki metode sisipkan yang memanggil persist()entitas ini. Saya ingin metode mengembalikan ID yang dihasilkan untuk entitas baru, tetapi ketika saya mengujinya, ia mengembalikannya 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; // ???
}
}
Saya juga memiliki kelas layanan yang membungkus DAO, jika itu membuat perbedaan:
public class ABCService {
@Resource(name="ABCDao")
ABCDao abcDao;
public int addNewABC(ABC abc) {
return abcDao.insertABC(abc);
}
}