Я использую Servlet-> EJB-> JPA на Glassfish 4. Приложение успешно развертывается.JPA Entity не обновляется
Когда я запускаю сервлет, он обновляет объект с id = 1 в db, но ничего не делает для него с id = 2. Исключено исключение.
@WebServlet("/AnimalServlet")
public class AnimalServlet extends HttpServlet {
@EJB AnimalDAOLocal lOBAnimalDAO;
protected void doGet(....) {
Animal lOBAnimal = lOBAnimalDAO.getAnimal(1); // gets OK
lOBAnimal.setName("Animal1"); // sets OK
lOBAnimalDAO.mergeAnimal(lOBAnimal); // updates in DB OK
lOBAnimal = lOBAnimalDAO.getAnimal(2); // gets OK
lOBAnimal.setName("Animal2"); // sets OK
lOBAnimalDAO.mergeAnimal(lOBAnimal); // doesn't update in DB.
}
И сессия Методы Бобовой являются:
@Stateless(mappedName = "AnimalDAOMapped")
public class AnimalDAO implements AnimalDAOLocal {
@PersistenceContext EntityManager em;
public Animal getAnimal(int id) {
return em.find(Animal.class, id);
}
public void mergeAnimal(Animal pOBAnimal) {
em.merge(pOBAnimal);
}
}
персистенция настройки устройства:
<persistence-unit name="JPATest" transaction-type="JTA">
<jta-data-source>jdbc/animaltest</jta-data-source>
<class>net.test.model.Animal</class>
</persistence-unit>
em.commit? 12345 – NicholasKarl
Нет, это не проблема транзакции, имя первого лица (Animal1) успешно завершается. –
[Это может помочь вам] (http://stackoverflow.com/questions/1069992/jpa-entitymanager-why-use-persist-over-merge) – Samy