-4

如何使用 jpql 更新 jpa 中的单个记录 // Person p = 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); 
 }
4

1 回答 1

2

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

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

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();
于 2014-08-24T05:37:19.750 回答