[英]Spring/Hibernate - entities being implicitly persisted
在以下代碼中,CustomerService.test()方法隱式保留客戶對象,即不調用merge()或update()。 為什么會出現這種情況?如果我明確調用merge / update,我怎么強制它才能持久保存實體?
控制器:
@Controller
@RequestMapping("/samples")
public class Samples {
@Autowired
private CustomerService customerService;
@RequestMapping(value = "/test", method = RequestMethod.GET)
@ResponseBody
public String test(){
customerService.test();
return "ok";
}
}
服務:
@Service
@Transactional
public class CustomerService {
@Autowired
private BaseDao baseDao;
public Customer findById(Long id) {
return baseDao.find(Customer.class,id);
}
public void test() {
Customer customer = findById(1L);
customer.setEmail("a@b.com");
}
}
道:
@Repository("baseDao")
public class BaseDao {
@PersistenceContext
private EntityManager em;
public void create(BaseEntity entity) {
em.persist(entity);
}
public <T> List<T> list(Class<T> entityClass) {
Session session = (Session) em.getDelegate();
List<T> list = session.createCriteria(entityClass).list();
return list;
}
public <T> T find(Class<T> entityClass, long primaryKey) {
return em.find(entityClass, primaryKey);
}
public <T> T update(T entity) {
return em.merge(entity);
}
public void remove(BaseEntity entity) {
em.remove(entity);
}
public void remove(Class<? extends BaseEntity> entityClass, long primaryKey) {
BaseEntity entity = em.find(entityClass, primaryKey);
if (entity != null) {
em.remove(entity);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.