Spring Data findByID返回空内部ManyToMany集合

时间:2017-11-15 10:48:48

标签: java spring-boot spring-data spring-data-jpa

我遇到一个问题:JpaRepository.findBy...()错误地返回具有空集合的对象(ManyToMany),而JpaRepository.findAll()返回所有字段的完全相同的对象,除了集合现在拥有所有正确的信息

实体:

注意:这些实际模型比较复杂,我将它们剥离以避免混乱。如果任何其他领域或内部关系可能影响我试图完成的结果,请告诉我,我将添加更多信息。

软件包:

@Entity
@Table(name = "bundle")
public class Bundle implements Serializable {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid2")
    private String id;

    @Column(name = "name", unique = true, nullable = false)
    private String bundleName;

    @ManyToMany(mappedBy="clientBundles", fetch = FetchType.EAGER)
    private Set<Client> clients = new HashSet<>();
}

客户端:

@Entity
@Table(name = "client")
public class Client {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid2")
    @Column(name = "client_id", unique = true, nullable = false)
    private String clientId;
    @JoinTable(
            name = "client_bundle",
            joinColumns =  { @JoinColumn(name = "client_id") },
            inverseJoinColumns = { @JoinColumn(name = "bundleName") }
    )
    @Column(name = "bundles")
    @ManyToMany(fetch = FetchType.EAGER)
    private Set<Bundle> clientBundles = new HashSet<>();
}

对于这两个,我有一个扩展JpaRepository<T, ID>的标准接口。

例如,如果我的BundleClient个,{I} bundleJpaRepository.findAll(),我可以看到clients集合有这2个客户端

但如果我bundleJpaRepository.findById(...)我得到相同的Bundle,但clients集合为0。

为什么会这样?

0 个答案:

没有答案