使用参数更新jpa中的记录

时间:2014-08-24 05:35:47

标签: java hibernate jpa objectdb

  

如何使用jpql // Person p更新jpa中的单个记录   = em.find(Person.class,1); // p.setState_Of_Origin(" Plateau"); // em.merge(p);对于上面你必须知道用户ID,   这并没有多大帮助。我使用了以下方法

Person update(EntityManager em,String setPerson,String getPerson)
{ 
  TypedQuery<Person> m = em.createQuery("update Person b set b.State_Of_Origin =setPerson  
  where b.Firstname = ?1 ", Person.class);
  m.setParameter(1, getPerson);
}  

void Update(EntityManager em, String name)
{
     TypedQuery<Person> m = em.createQuery("update Person p set p.State_Of_Origin = 'Plateau' where p.Firstname = ?1 ", Person.class);
    int executeUpdate = m.setParameter(1,name).executeUpdate();
     System.out.println(executeUpdate); 
 }

1 个答案:

答案 0 :(得分:1)

我检查了与使用jpa更新单个记录有关的主题,并且没有人满意我在这个网站上,但我很感激这些想法。这里有一些代码可以帮助另一位java爱好者。它有效!!!!!

//我正在使用objectdb,所以它允许你使用ur显式对象路径而不是持久单元名

EntityManagerFactory emf = Persistence.createEntityManagerFactory("$objectdb/db/directory.odb");
    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
     String queryupdate = "UPDATE Person SET State_Of_Origin=?1 WHERE Firstname=?2"; 
    int executeUpdate= em.createQuery(queryupdate).setParameter(1, "Nasarawa").setParameter(2, "fajemi").executeUpdate();
    System.out.println("executed "+executeUpdate+" item"); 
    em.getTransaction().commit();
    em.close();
    emf.close();