2016-10-25 6 views
0

JPARepositoryを使用してPostgres DBにオブジェクトをコミットするSpringブートアプリケーションがあります。私のリポジトリのためのコードは以下の通りです:SpringブートJPARepository - postgresテーブルを更新するには

public interface TestObjectDao extends JPARepository<TestObject, Long> { 

List<TestObject> findByTestRefIdAndTestType(String testRefId, 
     Short testType); 

TestObject save(TestObject testObject); 
} 

私はこの方法を「保存」を使用(インターフェイス上で実装する)私のサービスの実装では、作成したいときに。しかし、私が更新しようとすると、エントリも更新もされません。

prostgres dbのレコードを更新する方法については、誰でも助けてください。以下は私のコードスニペットを使用して更新しています:

@Component 
public class TestObjectServiceImpl implements TestObjectService { 

    @Inject 
    private TestObjectDao TestObjectDao; 

    @Override 
    public TestObjectResponse createTestObject(String testRefId, String testType, TestObject testObject) throws Exception{ 

    -- 
    -- 
    -- 

    try { 
      //update object 
      testObject = TestObjectDao.save(testObject); 
     } 
    } 
    catch (Exception ex) { 
     throw new Exception("Object could not be modified"); 
    } 

    TestObjectResponse testObjectResponse = new TestObjectResponse(); 
    testObjectResponse.setVal(testObject); 

    return testObjectResponse; 
    } 

} 

私はすべての関連記事を読み終えましたが、満足のいく解決を得られませんでした。

クイックレスポンスは非常に高く評価され、誰かが詳細を必要としている場合はお知らせください。それはそれのIDをチェックして、エンティティを保存するか、作成する必要が天気を

おかげ

答えて

0

春が検出されます。春が正しくエンティティに移入されますので、あなたの場合は

、あなたは、まずそれを選択する必要があります。if一部のカラムだけという
http://docs.spring.io/spring-data/jpa/docs/1.4.1.RELEASE/reference/html/jpa.repositories.html

注:

try { 
     testObject = TestObjectDao.findOne(testRefId); 
     //update object 
     testObject = TestObjectDao.save(testObject); 
} 

をセクション2.2.1を参照してください更新する場合は、はるかに効率的です:

@Modifying 
@Query("update User u set u.firstname = ?1 where u.lastname = ?2") 
int setFixedFirstnameFor(String firstname, String lastname); 
+0

ありがとうございましたAlexey !!!!あなたは私の一日を作った。レコードが更新されました。 – user5423592

+0

聞いて幸いです。正しい答えとしてマークしてください。 –

関連する問題