匹配查询返回复合ID Null-Spring

时间:2019-08-29 12:27:36

标签: java spring mongodb spring-data spring-mongodb

我正在使用spring数据mongoDB,并且在使用将组合ID返回为null的匹配查询时遇到了一个问题,但是在使用Query类时,它可以正常工作,但是我需要匹配查询,因为我正在使用Aggregation.newAggregation函数

匹配查询:

data class X(val a: Int, val b: Int, val c: Int)
data class Y(val a: Int, val b: Int)

val lista = listOf( X(1,2,3), X(2,3,1) )
val listb = lista.map { Y(it.a, it.b) }

println(listb) // -> gives [Y(a=1, b=2), Y(a=2, b=3)]

演示类:

 TypedAggregation<UserAction> aggregation = Aggregation.newAggregation(Demo.class,
                match(Criteria.where("id.productId").is(String.valueOf(4))));

List<Demo> mappedResults = mongoTemplate.aggregate(aggregation,Demo.class).getMappedResults();

@Document
public class Demo implements Persistable {

    @Id
    private DemoId id;

    /**
     * @return value of id
     */
    public DemoId getId() {
        return id;
    }

    @Override
    public boolean isNew() {
        return false;
    }

    /**
     * @param id
     */
    public void setId(DemoId id) {
        this.id = id;
    }
}

mongo文档样本

public class DemoId{

    private Long pId;

    private Long productId;

    /**
     * @return value of pId
     */
    public Long getPId() {
        return pId;
    }

    /**
     * @param pId
     */
    public void setPId(Long pId) {
        this.pId= pId;
    }

    /**
     * @return value of productId
     */
    public Long getProductId() {
        return productId;
    }

    /**
     * @param productId
     */
    public void setProductId(Long productId) {
        this.productId = productId;
    }
}

so id返回null为什么会发生这种情况,以及如何解决此问题?????

0 个答案:

没有答案