मैं जेपीए (एक्लिप्सलिंक) और स्प्रिंग का उपयोग कर रहा हूं। कहो कि मेरे पास एक ऑटो-जनरेटेड आईडी के साथ एक साधारण इकाई है:
@Entity
public class ABC implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
// ...
}
मेरे DAO वर्ग में, मेरे पास एक आवेषण विधि है जो persist()
इस इकाई पर कॉल करती है। मैं नई इकाई के लिए जनरेट की गई आईडी को वापस करने की विधि चाहता हूं, लेकिन जब मैं इसका परीक्षण करता हूं, तो यह 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; // ???
}
}
मेरे पास एक सेवा वर्ग है जो डीएओ को लपेटता है, अगर इससे कोई फर्क पड़ता है:
public class ABCService {
@Resource(name="ABCDao")
ABCDao abcDao;
public int addNewABC(ABC abc) {
return abcDao.insertABC(abc);
}
}