Use new projection capabilities in Spring Data Hopper.

Uses interfaces instead of DTOs to implement projections. Works
around DATAJPA-864 [0].

[0] https://jira.spring.io/browse/DATAJPA-864
This commit is contained in:
Oliver Gierke
2016-02-15 14:38:13 +01:00
committed by Stephane Nicoll
parent b205e02e33
commit e703997be2
3 changed files with 13 additions and 63 deletions

View File

@@ -16,48 +16,15 @@
package sample.data.jpa.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public interface HotelSummary {
public class HotelSummary implements Serializable {
City getCity();
private static final long serialVersionUID = 1L;
String getName();
private static final MathContext MATH_CONTEXT = new MathContext(2,
RoundingMode.HALF_UP);
Double getAverageRating();
private final City city;
private final String name;
private final Double averageRating;
private final Integer averageRatingRounded;
public HotelSummary(City city, String name, Double averageRating) {
this.city = city;
this.name = name;
this.averageRating = averageRating == null ? null
: new BigDecimal(averageRating, MATH_CONTEXT).doubleValue();
this.averageRatingRounded = averageRating == null ? null
: (int) Math.round(averageRating);
}
public City getCity() {
return this.city;
}
public String getName() {
return this.name;
}
public Double getAverageRating() {
return this.averageRating;
}
public Integer getAverageRatingRounded() {
return this.averageRatingRounded;
default Integer getAverageRatingRounded() {
return getAverageRating() == null ? null : (int) Math.round(getAverageRating());
}
}

View File

@@ -16,26 +16,9 @@
package sample.data.jpa.domain;
import java.io.Serializable;
public interface RatingCount {
public class RatingCount implements Serializable {
Rating getRating();
private static final long serialVersionUID = 1L;
private final Rating rating;
private final long count;
public RatingCount(Rating rating, long count) {
this.rating = rating;
this.count = count;
}
public Rating getRating() {
return this.rating;
}
public long getCount() {
return this.count;
}
long getCount();
}