【问题标题】:Update or saveorUpdate in CRUDRepositoryCRUDRepository 中的 Update 或 saveorUpdate
【发布时间】:2017-09-28 21:52:11
【问题描述】:

我知道之前已经回答了一个类似的问题,但我的问题是在界面中有 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
 }

以下是我的 baseEntity 类

@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。我只是想添加保存更新,请解释我的代码。

【问题讨论】:

    标签: java spring spring-boot spring-data


    【解决方案1】:

    如果检查解决了我的问题,并且保存方法在我传递 id 时它会更新数据库中的记录,而当我不传递 id 时它会在数据库中保存新记录时,则将其放在下面 就我而言,地点是传入对象,新地点是我正在设置地点ID的地点的新对象

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

    【讨论】:

      【解决方案2】:

      CrudRepository 只有save,但它也充当update

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

      【讨论】:

      • 我正在寻找这样的解释!简单易懂!谢谢!
      • @Tom:saveAll 也一样吗?
      • @TheOddAbhi 在后台 saveAll 只需迭代并为提供的 Iterable 中的每个元素调用 save。所以是的,它是一样的(例如github.com/spring-projects/spring-data-jpa/blob/master/src/main/…
      • 这必须被选为答案,投票赞成++
      猜你喜欢
      • 2015-12-11
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多