1

I have a Spring boot application thats committing object to Postgres DB using JPARepository. The code for my repository is as below:

public interface TestObjectDao extends JPARepository<TestObject, Long>   {

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

TestObject save(TestObject testObject);
}

When I want to create, In my service implementation (implementing above interface) I used "save" method. But, when I try to update, it neither creates entry nor update it.

How can I update records in Postgres database? Below is my code snippet using for update:

@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;
  }

}

I have gone through all related posts but didn't get satisfactory resolution.

1 Answer 1

4

Spring detects wether it needs to save or create an entity by checking it's ID.

In your case, you need to select it first, so Spring will populate the entity properly:

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

Please refer section 2.2.1:
http://docs.spring.io/spring-data/jpa/docs/1.4.1.RELEASE/reference/html/jpa.repositories.html

Note that if only some columns are to be updated, it's much more efficient to use:

@Modifying
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
int setFixedFirstnameFor(String firstname, String lastname);
Sign up to request clarification or add additional context in comments.

1 Comment

Happy to hear. Please mark it as a correct answer then.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.