How to Update a SQL database Table if the entity is Persistable in Spring Boot JPA

602 Views Asked by At

I have created a Spring Boot JPA Application, In that, I have made an entity persistable. as Shown Below. this is my code for creating an entity:

@Getter
@Setter
@ToString
@Entity
public class TableModel implements Persistable<String> {

    @Override
    public String toString() {
        return "TableModel [PrimaryKey=" + PrimaryKey + ", Term_Guid=" + Term_Guid + ", Term_Name=" + Term_Name
                + ", Term_Description=" + Term_Description + ", Term_Qualified_Name=" + Term_Qualified_Name
                + ", Term_Status=" + Term_Status + ", Term_Created_Date=" + Term_Created_Date + ", Term_Updated_Date="
                + Term_Updated_Date + ", Report_name=" + Report_name + ", Report_Guid=" + Report_Guid + ", Report_Type="
                + Report_Type + ", classification=" + classification + ", Term_Expert_Username=" + Term_Expert_Username
                + ", Term_Steward_Username=" + Term_Steward_Username + ", Report_Expert_Username="
                + Report_Expert_Username + ", Report_Owner_Username=" + Report_Owner_Username + ", Sql_db_load_time="
                + Sql_db_load_time + "]";
    }
    @Id
    @Column(name = "Primary_Key")
    private String PrimaryKey;
    
    @Column(name = "Term_Guid")
    private String Term_Guid;

    @Column(name = "Term_Name")
    private String Term_Name;

    @Column(name = "Term_Description",columnDefinition = "nvarchar(MAX)")
    private String Term_Description;

    @Column(name = "Term_Qualified_Name")
    private String Term_Qualified_Name;

    @Column(name = "Term_Status")
    private String Term_Status;

    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date Term_Created_Date;

    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date Term_Updated_Date;

    @Column(name = "Report_name")
    private String Report_name;
    
    @Column(name = "Report_Guid")
    private String Report_Guid;
    
    @Column(name = "Report_Type")
    private String Report_Type;
    
    @Column(name = "Classification")
    private String classification;
    
    @Column(name = "Term_Expert_Username")
    private String Term_Expert_Username;
    
    @Column(name = "Term_Steward_Username")
    private String Term_Steward_Username;
    
    @Column(name = "Report_Expert_Username")
    private String Report_Expert_Username;
    
    @Column(name = "Report_Owner_Username")
    private String Report_Owner_Username;
    
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date Sql_db_load_time;


    @Override
    public boolean isNew() {
        // TODO Auto-generated method stub
        return true;
    }
    
@Override
public String getId() {
    // TODO Auto-generated method stub
    return null;
}
    
}

By using this Code I am able to insert data successfully but if I want to update the data which is inserted I m not able do, Please Suggest how I can update the data if the entity is persistable using Springboot jpa

2

There are 2 best solutions below

0
swapyonubuntu On

If you are not clear how to fire update queries with spring data jpa,

You can refer this document for partial updates:

https://www.baeldung.com/spring-data-partial-update

You can also refer spring data jpa documentation.
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.modifying-queries

0
Abhishek Kumar Jena On

I suggest you keep your entity simple, then create a repository that extends JpaRepository or CrudRepository where you can write your queries

@Repository
public interface TableModelRepository extends JpaRepository<TableModel, String>{

@Modifying
@Query("update TableModel u set u.firstname = ?1 where u.lastname = ?2")
void updateTable(String firstname, String lastname);

}

create a service class where you can perform the update

@Service
public class TableModelServices{
 
    @Autowired
    private TableModelRepository tableModelRepository;
    
    @Override
    public String updateTable(String firstname, String lastname) {
        tableModelRepository.updateTable(firstname, lastname);
        return null;
    }


}

the above codes are for reference, I will mention some links which will help you more https://www.baeldung.com/spring-data-jpa-dynamicupdate

https://www.baeldung.com/spring-data-partial-update

you can refer to these two links.