2017-09-06 11 views
0

私はJPAを初めて使い慣れている - 私はログインテーブル上でユーザを見つけることができるこのルックアップを持っている。パスワード、エントリを更新するには?JPA - Java Spring - エントリを更新する - ユーザを編集する


だから私はそのユーザーの電子メールアドレスで言うことができる。

TblLogin acc = tblLoginRepository.findByEmail(email); 

私は "getTransaction()"

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

ので

このような何かを呼び出す方法を見てきましたか?

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

しかし、私はちょうどこのようなことをしますか?それはそれですか?

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

^そしてそれはということです - エントリが更新されます - 他には何?

ユーザー登録時 - 私はsaveAndFlushを実行しますか?私はエントリーの編集のために何もする必要はありませんか?

 TblLogin newAcc = tblLoginRepository.saveAndFlush(new TblLogin(
        email, 
        password, 
        pin 
       )); 

答えて

0

JPAを使用しているときには用語が多用されます。 Entity, EntityManager, Session, Transactionなどの基本的な部分についての基本的な理解が必要です。getting-started-with-spring-data-jpaが役に立ちます。たとえば、@Transactionalを使用すると、このアノテーションを装飾したメソッドがトランザクション内で実行されていることが確認されます。

spring-boot-hibernate-session-questionもチェックしてください。 のように、スプリング・ブートのリポジトリを使用して、あなたが何かを持っている可能性があり:

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()との違いを学ぶために、次のようになります。上記の実装はsave()を述べ

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

のように見えますhereと記載されている。

この回答がお役に立てば幸いです。

関連する問題