Tôi đang sử dụng JPA (EclipseLink) và Spring. Giả sử tôi có một thực thể đơn giản với ID được tạo tự động:
@Entity
public class ABC implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
// ...
}
Trong lớp DAO của mình, tôi có một phương thức chèn gọi persist()
thực thể này. Tôi muốn phương thức trả về ID đã tạo cho thực thể mới, nhưng khi tôi kiểm tra nó, nó sẽ trả về 0
thay thế.
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; // ???
}
}
Tôi cũng có một lớp dịch vụ bao bọc DAO, nếu điều đó tạo ra sự khác biệt:
public class ABCService {
@Resource(name="ABCDao")
ABCDao abcDao;
public int addNewABC(ABC abc) {
return abcDao.insertABC(abc);
}
}