更新或保存器CRUD存储库中的更新

2022-09-01 21:31:20

我知道之前已经回答了一个类似的问题,但我的问题是在界面中有3种方法的情况下实现更新保存。我目前在我的项目中使用以下方法,不知道如何在其中进行saveOrUpdate。以下是我的课程:

   public interface CompanyRepository extends CrudRepository<Company,Long>{
   Company findByCompanyName (String companyName);
   List<Company> findAll();
   Company findById(Long id);
   }

以下是我的公司课程的一部分

@Entity
public class Company extends BaseEntity{
 @NotNull
@Size(min = 2, max = 16)
private String companyName;
@Length(max = 60)
private String desc;
//TODO max: add LOGO class later for pic saving
@OneToMany
private List<MobileModel> mobileModels;

public Company()
{
  super();
  mobileModels = new ArrayList<>();
  }

//Getters n setters
 }

以下是我的基本实体克拉

@MappedSuperclass
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy =  GenerationType.AUTO)
protected final Long id;

@Version
private Long version;  
//Getters n setters
}

提前致谢。我到处阅读,并尝试了5个小时的很多东西。我只是希望CompanyRepository实现所有3种方法,而无需在其他类中重写它们,但是如果我也有,那么请解释一下,因为我的部分代码依赖于CompanyRepository。我只想添加保存与更新,请解释关于我的代码。


答案 1

CrudRepository只有,但它也起作用。saveupdate

  • 当您在实体上执行空操作时,它将执行 .saveidsave
  • 当您对具有现有实体的实体执行操作时,它将执行一个操作,这意味着在您使用例如并在对象中更改某些内容之后,您可以调用此对象,它实际上会执行一个操作,因为在您获得数据库中存在的填充对象后。saveidupdatefindByIdsaveupdatefindByIdid
  • save可以接受单个实体或实体类型的实体。CrudRepositoryIterable

答案 2

如果检查解决我的问题和保存方法正在作为保存和更新,当我传递id它更新数据库中的记录,当我不传递id时,它将新记录保存在数据库位置是我的情况下的传入对象,新地方是我正在设置的地方id的新对象

    if(place.getPlaceId()!=0)
        newPlace.setPlaceId(place.getPlaceId());

推荐