JPA - Java Spring - 更新条目 - 编辑用户

时间:2017-09-06 09:11:01

标签: java spring hibernate jpa

我对JPA很新 - 我有这个查找会在登录表上找到用户..现在,如果我收到用户更改密码等新信息,我该如何更新条目?

所以我找到了用户 - 让我们通过他们的电子邮件地址说。

moment.locale("ar");
moment()._locale.postformat = function (string) { return string; }; // jshint ignore:line
document.write(moment().format("LLL"));

我见过调用“getTransaction()”的方法

http://www.objectdb.com/java/jpa/persistence/update

这样的事情呢?

TblLogin acc = tblLoginRepository.findByEmail(email);

但是我只是做这样的事情 - 就是这样吗?

  tblLoginRepository.getTransaction().begin();
  acc.setPassword("test2");
  tblLoginRepository.getTransaction().commit();

^那就是 - 没有别的 - 条目更新?

当用户注册时 - 我做了saveAndFlush?我不需要为编辑条目做任何其他事情吗?

   TblLogin acc = tblLoginRepository.findByEmail(email);
   acc.setPassword("newpassword");

1 个答案:

答案 0 :(得分:0)

使用JPA时会大量使用术语。您应该对Entity, EntityManager, Session, Transaction等基本部分有基本的了解。getting-started-with-spring-data-jpa会对您有所帮助。例如,使用@Transactional可确保在事务中运行带有此批注的修饰方法。

您还应该查看spring-boot-hibernate-session-question。 使用spring-boot的存储库,你可以得到类似的东西:

TblLogin acc = tblLoginRepository.findByEmail(email);
acc.setPassword("newpassword");
tblLoginRepository.save(acc);

上述save()的实现如下:

public <S extends T> S save(S entity) {

    if (entityInformation.isNew(entity)) {
        em.persist(entity);
        return entity;
    } else {
        return em.merge(entity);
    }
}

下一步是了解em.persist()em.flush()之间的差异,如上所述here

我希望这个答案可以帮到你!