У меня есть сущность CandidateTransaction и CandidateTransactionRepository расширение CrudRepository
@Repository
public interface CandidateTransactionRepository extends CrudRepository<CandidateTransaction,Long>{
//find methods
}
@Entity
@Table(name = "ONB_CANDIDATE_TRANS")
public class CandidateTransaction implements Serializable {
private static final long serialVersionUID = 3615632069112078119L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer ID;
//other columns
Я использую метод сохранения CrudRepository сохранить объект упомянутой сущности. Когда для сущности нет строки, совершенно очевидно, что она создаст автоматически сгенерированный ключ и вставит его в столбец идентификатора без вмешательства с java end.
And Since CrudRepository save () Метод проверяет, является ли объект новым или нет, и, если он новый, сохраняет данные, иначе он вызывает метод слияния для обновления той же строки.
В идеале он должен обрабатывать такой случай, но в моем случае я должен специально проверить существует ли строка с конкретным значением или нет, если да, задайте обновленные значения в существующем объекте, а затем сохраните его.
Есть ли способ разобраться в этом.
if (candidateTransactionRepository.existsByCandidateIdAndTransactionType(candidateId, transactionType))
candidate = candidateTransactionRepository.findByCandidateIdAndTransactionType(candidateId,transactionType);
candidate = prepareTransactionProgressObjectToSave(candidateId, transactionType, transactionStatus);
savedInstance = candidateTransactionRepository.save(candidate);
И что делать, если мне нужно сохранить коллекцию той же сущности.