加入Spring Data JPA

时间:2017-04-03 09:59:26

标签: spring-boot spring-data-jpa

我有以下的邀请

课程

public class Course{

    int courseId;

    int courseName;

    @OneToMany(fetch=FetchType.Lazy,mappedBy="course")
    Set <CourseProperty> courseProp;

    ... setters & getters
}

课程属性

public class CourseProperty{

    int courseId;
    int prop1;
    int prop2;
    int prop3;

    @ManyToOne(fetch=FetchType.lazy)
    @JoinColumn(name="courseId",referencedColumnName="courseId",insertable=false, updatable=false)
    @JsonIgnore
    Course course;

    ... setters & getters

}

现在这是双向连接。所以我必须将@JsonIgnore放在Course的{​​{1}}属性中,否则当我打印CourseProp对象时,会导致无限循环。

但是现在我无法在其中打印带有课程对象的课程道具对象。如何更改我的实体。假设我想要查询类似

的内容
course

我想从CourseProp存储库运行此查询(通过Spring Data JPA),这将导致CourseProp对象但是JsonIgnore的becoz,我不会在课程道具中获得课程对象。

1 个答案:

答案 0 :(得分:1)

我认为使用add_menu_page('Sorteios', 'Sorteios', 'manage_options', 'wabot-menu-sorteio', 'wabot_menu_sorteio_handle', 'dashicons-awards', 100); add_submenu_page(null, 'Adicionar Sorteio', 'Adicionar Sorteio', 'manage_options', 'wabot-submenu-adicionar-sorteio', 'wabot_submenu_adicionar_sorteio_handle'); 之类的框架将您的<a href="<?=admin_url("admin.php?page=wabot-submenu-adicionar-sorteio")?>"><button class="btn btn-success btn-sm">Adicionar</button></a> 直接序列化为Entities并不是一个好主意。由于这些框架尝试将传递的对象完全序列化为JSON,并且由于JacksonJSON代理,因此它将获取对象的所有关联。即使是您标记为Entities的那些属性,也不需要它们。同样,如果对象中存在双向关系,则会陷入无限循环。

相反,我认为最好为Hibernate创建LAZYModel类,并用所需的属性实例化它们,然后将这些对象序列化为DTO