Je sais qu'il y a déjà eu une question similaire répondue précédemment, mais mon problème implémente l'enregistrement avec mise à jour alors qu'il y a 3 méthodes dans l'interface. J'utilise actuellement les méthodes suivantes dans mon projet et je ne sais pas comment faire saveOrUpdate dans ce domaine. Voici mes cours:
public interface CompanyRepository extends CrudRepository<Company,Long>{
Company findByCompanyName (String companyName);
List<Company> findAll();
Company findById(Long id);
}
Ce qui suit fait partie de ma classe d'entreprise
@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
}
Ce qui suit est mon clas baseEntity
@MappedSuperclass
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected final Long id;
@Version
private Long version;
//Getters n setters
}
Merci d'avance. J'ai lu partout et essayé tant de choses pendant 5 heures. Je veux juste que CompanyRepository implémente les 3 méthodes sans que je les remplace dans une autre classe, mais si je l'ai aussi, expliquez comment, car une partie de mon code dépend de CompanyRepository. Je souhaite simplement ajouter enregistrer avec mise à jour, veuillez expliquer en ce qui concerne mon code.
CrudRepository
n'a que save
mais il agit également comme update
.
save
sur une entité avec id
vide, cela fera un save
.save
sur une entité avec id
existant, cela fera un update
ce qui signifie qu'après avoir utilisé findById
par exemple et modifié quelque chose dans votre objet, vous pouvez appeler save
sur cet objet et il fera en fait un update
car après findById
vous obtenez un objet avec id
rempli qui existe dans votre base de données.save
dans CrudRepository
peut accepter une seule entité ou Iterable
de votre type d'entité.mettre ci-dessous si la vérification résout mon problème et la méthode d'enregistrement fonctionne comme enregistrer et mettre à jour à la fois lorsque je passe id, il met à jour l'enregistrement dans la base de données et lorsque je ne passe pas id, il sauvegarde un nouvel enregistrement à la base de données. nouvel objet de lieu dans lequel je mets l'identifiant du lieu
if(place.getPlaceId()!=0)
newPlace.setPlaceId(place.getPlaceId());