ฉันใช้ JPA (EclipseLink) และ Spring สมมติว่าฉันมีเอนทิตีธรรมดาที่มี ID ที่สร้างขึ้นอัตโนมัติ:
@Entity
public class ABC implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
// ...
}
ในคลาส DAO ของฉันฉันมีวิธีการแทรกที่เรียกpersist()
ใช้เอนทิตีนี้ ฉันต้องการให้เมธอดส่งคืน ID ที่สร้างขึ้นสำหรับเอนทิตีใหม่ แต่เมื่อฉันทดสอบมันจะส่งคืน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; // ???
}
}
ฉันยังมีคลาสบริการที่ครอบคลุม DAO หากนั่นสร้างความแตกต่าง:
public class ABCService {
@Resource(name="ABCDao")
ABCDao abcDao;
public int addNewABC(ABC abc) {
return abcDao.insertABC(abc);
}
}