如何建模查找表JPA

时间:2017-02-18 02:24:05

标签: java spring hibernate jpa spring-boot

我试图在另一个项目的数据库之上构建一个Spring Boot数据层。我想通过Restful端点而不是直接从数据库中获取数据。最大抽象是目标。这是我的问题。考虑以下JPA实体:

@Entity
@Table(name = "PERSON", schema = "public")
public class Person {
@Id private long id;
private String name;
private long favoriteFood;
private Address address;

//Getters, Setter etc.....
}

请注意,favoriteFood是一个long,而不是String。这是因为DB使用查找表。让我们说乔最喜欢的食物是披萨。 person表在favorite_food列中存储1,该列是" pizza"存储在food_ref表中的值。该模式在DB中重复数百次或数次。在JPA / Hibernate中对此进行建模的最佳方法是什么?将变量更改为String并让getter和setter执行查找?我没有找到任何看似奇怪的例子。这是一种常见的DB结构。任何有关最佳实践的建议都将受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

此方案中最好的方法是在JPA实体中使用一对一关系与FoodRef类

@Entity
@Table(name = "PERSON", schema = "public")
public class Person {
    @Id private long id;
    private String name;

    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="food_ref_id")
    private FoodRef favoriteFood;

    private Address address;

    //Getters, Setter etc.....
}