Let’s say you are using Spring Data and you have a “Composite Key” (ie, a tuple or EmbeddedId). Generally, you may want to query by the whole composite key (ie, by ID), which is generally fairly straightforward with a JPA “query method” (still not sure that is the official name). Even so, one of the reasons you use tuples or composite keys is to group data (and maybe even group within a group). Running with that thought, let’s say you have the following composite key:
@NoArgsConstructor
@AllArgsConstructor
@Data
@Embeddable
public class PlantScheduleCompositeKey implements Serializable {
@Column(name = "state")
private String state;
@Column(name = "city")
private String city;
@Column(name = "zip")
private String zip;
@Column(name = "crop")
private String crop;
}
Next, let’s use the composite key in this Entity
:
@Entity
@Data
@Table(name="plant_schedule")
public class PlantSchedule implements Serializable {
@EmbeddedId
private PlantScheduleCompositeKey id;
private boolean frostDates;
private boolean moonDates;
private String sowSeedsIndoorSchedule;
private String transplantSeedlingsSchedule;
private String directSowSchedule;
private String source;
}
Now, if you are using a CrudRepository
, or better yet a PagingAndSortingRepository
, you’ll already get findById()
out of the box. This will not help us if we want to search by only city, state, and zip (ie, without the crop name). So, we need to craft a custom query method, which will be turned into JPQL behind the scenes.
@RepositoryRestResource
public interface IPlantScheduleRepository extends PagingAndSortingRepository<PlantSchedule, PlantScheduleCompositeKey>{
public List<PlantSchedule> findAllByIdCityContainingAndIdStateContainingAndIdZipContaining(String city, String state, String zip, Pageable pageable);
}
The key here is to understand that there is a hierarchy here with a filter that is repeated for the 3 out of the 4 parts of the composite key we want to search against. We can interpret the substring IdCityContaining
as being the field id
on the entity PlantSchedule
, followed by the part of the composite key we want to do a contains comparison against. Therefore, we repeat this pattern twice more for state and zip. So, in summary, we have a query method that will return all PlantSchedule
s with a city, state, and zip matching the provided arguments.
Sample call:
Pageable pageable = PageRequest.of(0, 100);
List<PlantSchedule> pageList = plantScheduleRepository.findAllByIdCityContainingAndIdStateContainingAndIdZipContaining(city, state, zip, pageable);
Pingback: buy raw garden cartridges online
Pingback: happyLuke
Pingback: testosterone booster
Pingback: Rent a car Bar
Pingback: Buy Vyvanse Online UK
Pingback: ipollo b2 for sale
Pingback: Buy Banana Diesel Strain of Marijuana Online,
Pingback: CableFreeTV
Pingback: Budget Gorilla Trekking Uganda
Pingback: Artvin Gazette
Pingback: happyruck
Pingback: virtual card buy with cryptocurrency
Pingback: hennessy white for sale online
Pingback: e-liquids
Pingback: best solar generators
Pingback: Panache Academy, Vadodara
Pingback: the last song
Pingback: search
Pingback: Psilocybe Cubensis
Pingback: walther arms ppq m2 subcompact 9mm 10rd & 15rd 3.5
Pingback: browning a5 sweet 16 manual
Pingback: beretta 84 380 acp
Pingback: Buy GBL wheels cleaner online
Pingback: - do si dos strain
Pingback: marlin 1895 sbl for sale
Pingback: cimarron man with no name for sale
Pingback: sig sp2022
Pingback: walther mp5 for sale
Pingback: uca.com.vn
Pingback: DMT AYAHUASCA FOR SALE
Pingback: buy real drivers license online
Pingback: HELIX 1 MG ALPRAZOLAM
Pingback: sbgv245 for sale
Pingback: beretta 92fs inox
Pingback: krt vape cartridges
Pingback: krt cart
Pingback: krt cart
Pingback: car cleaner gbl
Pingback: buy Fentanyl injection online
Pingback: card to cryptocurrency exchange
Pingback: Cannabis Oil
Pingback: cryptocurrency card buy
Valuable info. Lucky me I found your web site by accident, and Im shocked why this accident did not happened earlier! I bookmarked it
Pingback: colt python 2020
Pingback: lottovip
Pingback: walther ppq vs hk vp9
Pingback: Herbal Incense
Hey man, was just looking through the net looking for some info and came across your post. I am impressed by the info that you have on this blogsite. It shows how well you understand this topic. bookmarked this page, will come back for more. You, my friend, ROCK!!!
Lets start absorbing that now.
Pingback: tik tok funny video