Created
February 3, 2018 11:01
-
-
Save mmaravich/e0a660594c22156f14fa2aa1fb7bbdc9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.demo; | |
import static org.springframework.data.mongodb.core.query.Criteria.where; | |
import org.springframework.data.annotation.TypeAlias; | |
import org.springframework.data.mongodb.core.MongoOperations; | |
import org.springframework.data.mongodb.core.query.Criteria; | |
import org.springframework.data.mongodb.core.query.Query; | |
import org.springframework.data.mongodb.repository.query.ConvertingParameterAccessor; | |
import org.springframework.data.mongodb.repository.query.MongoQueryMethod; | |
import org.springframework.data.mongodb.repository.query.PartTreeMongoQuery; | |
public class InheritanceAwarePartTreeMongoQuery extends PartTreeMongoQuery { | |
private final Criteria inheritanceCriteria; | |
public InheritanceAwarePartTreeMongoQuery(MongoQueryMethod method, MongoOperations mongoOperations) { | |
super(method, mongoOperations); | |
inheritanceCriteria = | |
method.getEntityInformation().getJavaType().isAnnotationPresent(TypeAlias.class) | |
? where("_class") | |
.is(method.getEntityInformation().getJavaType().getAnnotation(TypeAlias.class).value()) | |
: null; | |
} | |
@Override | |
protected Query createQuery(ConvertingParameterAccessor accessor) { | |
Query query = super.createQuery(accessor); | |
if (inheritanceCriteria != null) { | |
query.addCriteria(inheritanceCriteria); | |
} | |
return query; | |
} | |
@Override | |
protected Query createCountQuery(ConvertingParameterAccessor accessor) { | |
Query query = super.createCountQuery(accessor); | |
if (inheritanceCriteria != null) { | |
query.addCriteria(inheritanceCriteria); | |
} | |
return query; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment