ManyToOne关系没有列表/设置使用JPA

时间:2015-01-12 12:48:55

标签: java hibernate jpa many-to-one

我有使用hibernate的新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 关系是双向的?为什么这可能?制造商如何了解其产品,如何将其保留在数据库表中?

1 个答案:

答案 0 :(得分:1)

如果您在数据库级别查看它,表Product将具有类似manufacturer_id的内容,它是Manufacturer表的外键。在单向和双向映射的情况下,表结构保持不变。

制造商将通过使用Product查询表manufacturer_id = <its id>来了解其产品。在JPA级别,如果是单向映射,您可以通过from Product p where p.manufacturer.id = :man_id进行查询。在双向映射的情况下,您可以执行manufacturer.getProducts(),但它会转换为相同的SQL。