我知道之前已经回答了一个类似的问题,但我的问题是在界面中有 3 个方法时使用更新实现保存。 我目前在我的项目中使用以下方法,但不知道如何在其中进行 saveOrUpdate。 以下是我的类(class):
public interface CompanyRepository extends CrudRepository<Company,Long>{
Company findByCompanyName (String companyName);
List<Company> findAll();
Company findById(Long id);
}
以下是我的公司类(class)的一部分
@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。我只是想添加保存更新,请解释我的代码。
最佳答案
CrudRepository
只有 save
但它也可以作为 update
。
- 当您对具有空
id
的实体执行save
时,它将执行save
。 - 当您对具有现有
id
的实体执行save
时,它会执行update
,这意味着在您使用findById
例如并更改了对象中的某些内容,您可以在此对象上调用save
,它实际上会执行update
因为在findById
之后获取数据库中存在的填充了id
的对象。 save
可以接受单个实体或您的实体类型的Iterable
。
CrudRepository
中的 关于java - CRUDRepository 中的 Update 或 saveorUpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43719828/