আমি জেপিএ (এক্সপ্লিসলিঙ্ক) এবং স্প্রিং ব্যবহার করছি। বলুন আমার একটি স্বতঃ-উত্পন্ন ID সহ একটি সহজ সত্তা রয়েছে:
@Entity
public class ABC implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
// ...
}
আমার ডিএও ক্লাসে আমার একটি সন্নিবেশ পদ্ধতি রয়েছে যা 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);
}
}