查询与null元素的加入

问题描述 投票:0回答:1

我用弹簧数据的JPA与Hibernate。

@Entity
public class Samples {

    @EmbeddedId
    private SampleId id;

    @MapsId("samplingId")
    @ManyToOne(optional = false)
    private Samplings sampling;
    ..
}

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Samplings {
    @OneToOne
    private Products product;

    @OneToOne
    private Dimensions dimension;

    @OneToOne
    private Colors color;
    ...
}

尺寸和颜色可能为空。

我搜索得到samplesproductdimensionscolors(如果没有dimensioncolors,希望得到samples太)。

我所做的:

Join<Samples, Samplings> samplings = root.join("sampling", JoinType.INNER);
Join<Samples, Colors> colors = (Join) samplings.join("color", JoinType.INNER);
Join<Samples, Dimensions> dimension = (Join) samplings.join("dimension", JoinType.INNER);
Join<Samplings, Products> product = (Join) samplings.join("product", JoinType.INNER);

为了得到结果我需要我应该把留给colordimension

sql hibernate jpa
1个回答
1
投票

如果没有尺寸,颜色,想要得到的样本太

要做到这一点,你需要改变INNER JOINcolordimensions的LEFT JOINs:

Join<Samples, Samplings> samplings = root.join("sampling", JoinType.INNER);
Join<Samples, Colors> colors = (Join) samplings.join("color", JoinType.LEFT);
Join<Samples, Dimensions> dimension = (Join) samplings.join("dimension", JoinType.LEFT);
Join<Samplings, Products> product = (Join) samplings.join("product", JoinType.INNER);

根据你的使用情况,您可能希望在INNER JOINproduct求助于LEFT JOIN为好。

© www.soinside.com 2019 - 2024. All rights reserved.