编程语言
首页 > 编程语言> > Java-使用JPA无需列表/设置的ManyToOne关系

Java-使用JPA无需列表/设置的ManyToOne关系

作者:互联网

我有一个使用休眠的新JPA项目,在阅读其代码时遇到了困难.我看见:

@Entity
public class Product {

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Manufacturer manufacturer;

...
}

和另一个实体

@Entity
public class Manufacturer{

 private ManufacturerId manufacturerId;

    private String name;

    private Manufacturer() {
    }
...

为什么制造商实体类中没有包含产品的列表/集合? ManyToOne关系是双向的吗?为什么会这样呢?制造商如何了解其产品,如何将其保留在数据库表中?

解决方法:

一对多关联的多面是可选的.您可以根据需要实施它,或者在不需要甚至有风险时跳过它.一个制造商可能拥有数千种产品.一次取走所有这些没有任何意义.最好通过查询加载并使用分页.当然,如果您认为这对您有所帮助,则可以将产品系列添加到制造商.

>为什么制造商实体类中没有产品的列表/集合?

因为不需要或认为有风险.
> ManyToOne关系是双向的吗?

当然可以即使关系没有实现,它仍然存在.
>为什么会这样?如何将其保留在数据库表上?

OneToMany关系始终由一侧的id来实现. (在这种情况下,Products中的ManufacturerId.不需要任何其他操作.即使您实现了产品集合.这也不会影响其持久化方式.
>制造商如何了解其产品?

没有.但是当然可以查询数据库.

标签:many-to-one,jpa,hibernate,java
来源: https://codeday.me/bug/20191120/2047190.html