sql >> Databasteknik >  >> RDS >> Oracle

Spring Data JPA - Passera kolumnnamn och värde som parametrar

Ta en titt på Spingdataspecifikationer . Du kan hitta din lösning där!
När du läser dokumenten kan du se att om Calendar är din domän (jag skulle försöka hitta ett annat namn för min domän, det finns en Kalender klass i Java SE redan), så kan du använda något som ovan,

@Repository
public interface CalendarRepository extends JpaRepository<Calendar, Integer>, JpaSpecificationExecutor<Calendar> {
}


public class CalendarSpecification implements Specification<Calendar> {

    private String randomColumnName; // A varchar column.
    private String valueToSearchFor;

    public CalendarSpecification(String randomColumnName, String valueToSearchFor) {
        this.randomColumnName = randomColumnName;
        this.valueToSearchFor = valueToSearchFor;
    }

    @Override
    public Predicate toPredicate(Root<Calendar> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
        return builder.and(builder.equal(root.<String>get(this.randomColumnName), this.valueToSearchFor));
    }
}


@Service
public class CalendarService {

    @Autowired
    private CalendarRepository calendarRepository;

    public List<Calendar> findCustom(String randomColumnName, String valueToSearchFor) {
        CalendarSpecification cs = new CalendarSpecification(randomColumnName, valueToSearchFor);
        return calendarRepository.find(cs);
        // Or using lambda expression - without the need of CalendarSpecification class.
//      return calendarRepository.find((Root<ProductCategory> root, CriteriaQuery<?> query, CriteriaBuilder builder) -> {
//          return builder.and(builder.equal(root.<String>get(randomColumnName), valueToSearchFor));
//      });
    }
}


  1. Ms SQL geography.STDistance returnerar fel avstånd

  2. MBR inom inte korrekt i mysql

  3. Rätt sätt att ge användare tillgång till ytterligare scheman i Oracle

  4. Hur väljer man bara numerisk data från mysql?