当前位置: 首页 > 知识库问答 >
问题:

在spring Resfull api中使用Hibernate FetchType.Eager

公冶威
2023-03-14

我正在做spring+Hibernate项目,由于两个实体类别和产品之间存在着一对多的关系,我为Product实体创建了restfull webservices,它是类别的子实体,并且使用FETCH,希望它与父记录重复地给出一个记录,但我只想得到产品记录,我不知道如何实现。

我的实体类是产品类

@Entity
public class product {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;
    private String code;
    private String name;
    private String brand;
    private String description;
    private Double unitPrice;
    private Integer quantity;
    private Integer purchases;
    @Column(name="is_active")
    private boolean active;
    private Integer view;
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="category_id")

    private category category1;
    @ManyToOne
    @JoinColumn(name="supplier_id")
    private User user1;
    public product() {

        this.code="PRD"+UUID.randomUUID().toString().substring(25).toUpperCase();

    }
}

类别类

@Entity
public class category {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;

    private String name;
    private String description;
    @Column(name="image_url")
    private String imageUrl;
    private boolean active=true;

    @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="category1")
    private List<product> products;
}

结果是

[{“ID”:1,“代码”:“PRDABC123DEFX”,“名称”:“iPhone.5s”,“品牌”:“Apple”,“描述”:“这是质量最好的手机”,“UnitPrice”:10.0,“数量”:2,“购买”:0,“活动”:真,“查看”:2,“类别1”:{“ID”:2,“名称”:“手机”,“描述”:“这是手机的描述”,“ImageUrl”:“CAT_1.PNG”,“活动”:真,“产品”:[{“ID”:1,“代码”:“PRDABC123DEFX”,“名称”:“iPhone.5s”,“品牌”:“Apple”,“描述”PPLE“,”description“:”这是最好的手机“,”UnitPrice“:10.0,”数量“:2,”购买“:0,”活动“:true,”查看“:2,”Category1“:{”ID“:2,”名称“:”手机“,”description“:”这是手机的说明“,”ImageUrl“:”CAT_1.PNG“,”活动“:true,”产品“:[{”ID“:1,”代码“:”PRDABC123DEFX“,”名称“:”iPhone.5s“,”品牌“:”Apple“,”description“:”这是最好的手机“,”UnitPrice“:10.0,”数量“ICE“:10.0,”数量“:2,”购买“:0,”活动“:true,”查看“:2,”类别1“:{”ID“:2,”名称“:”移动“,”说明“:”这是移动的说明“,”ImageUrl“:”CAT_1.PNG“,”活动“:true,”产品“:[{”ID“:1,”代码“:”PRDABC123DEFX“,”名称“:”iPhone.5s“,”品牌“:”Apple“,”说明“:”这是最好的移动“,”UnitPrice“:10.0,”数量“:2,”购买“:0,”活动“:true,”查看“:2,”类别1“:{”ID“:2,”名称Category1“:{”ID“:2,”Name“:”Mobile“,”description“:”这是Mobile的说明“,”ImageUrl“:”Cat_1.png“,”Active“:true,”Products“:[{”ID“:1,”Code“:”PRDABC123DEFX“,”Name“:”iPhone.5s“,”Brand“:”Apple“,”description“:”这是最好的手机“,”UnitPrice“:10.0,”数量“:2,”购买“:0,”Active“:true,”View“:2,”Category1“:{”ID“:2,”


这是

但我只想要产品表记录

JsonController类是

@Controller

public class JsonController {
    @Autowired
     private  productDao productDao;
     @RequestMapping(value="/json")
     @ResponseBody
     public List<product> getAllProducts(){


         return productDao.getAllProduct();
     }



}

共有1个答案

任元青
2023-03-14

您应该通过使用product类中的JsonIgnoreProperties注释忽略category1字段进行序列化:

@Entity
@JsonIgnoreProperties({"category1"})
public class product { 

   //...

}

注意:类名(按惯例)应以大写开头。

 类似资料:
  • 我一直试图获得一个简单的web操作来向API发出一个经过身份验证的get请求(我已经从示例代码中删除了实际的url和秘密)。 我已经在本地成功地运行了这一点,但是当我测试web动作时,它只是在记录“调用Axios”之后死亡。 它不会报告错误,我尝试实现一个承诺,认为线程在api响应之前就结束了,但没有效果。有什么线索吗?

  • 问题内容: 我想使用Android Studio使用Gradle构建工具开发应用程序。我无法在上插入存储库和库。我的文件如下: 如何在项目中添加OpenCV? 问题答案: 您可以在Android Studio中轻松完成此操作。 请按照以下步骤将Open CV作为库添加到您的项目中。 libraries在项目主目录下创建一个文件夹。例如,如果您的项目是OpenCVExamples,则将创建一个Ope

  • 我想使用Android Studio开发一个应用程序使用Gradle构建工具。我无法在上插入OpenCV repo和库。我的文件如下所示: 我如何在我的项目中添加OpenCV?

  • 问题内容: 我有一个简单的Entitly类,(和单独类中的字段)。然后,我使用Spring Data()访问数据库(MySql),使用常规ID,查询可以正常工作,无论是Spring生成的查询还是我自己编写的查询。与我没有设法创建正确的查询。我想做的是选择所有id(发生某些情况的EmbeddedId字段之一),这里有一些代码示例,也许有人会知道如何解决它。 实体类: EmbeddedId类: 和存储

  • 问题内容: 我正在研究控制建筑物的光和热的项目。后端(用Java编写)将在Mac Mini上运行,并且应该可以通过SOAP进行访问。 我希望将此项目的复杂性降至最低,因为我不希望每个使用它的人都必须设置应用程序服务器。所以到目前为止,我一直使用javax.xml.ws.Endpoint: 这样的效果出奇的好(嘿,您什么时候最后一次只用3行代码看到Java中的东西?),但是现在我正在寻找一种使用HT

  • 问题内容: 我想使用系统蜂鸣器(并且只有在没有蜂鸣器/无法访问蜂鸣器时才使用扬声器)生成具有特定频率和长度(针对不同的声音信号)的蜂鸣声。我知道可以通过使用ioctl来做到这一点,但这需要root访问权限,而这是我所不希望的。 我知道我可以只使用“ beep”命令,但这将是一个依赖关系,如果可能的话,不应使用它(根本没有外部依赖关系,只有基本的linux库和C)。 我目前拥有的是以下代码(但这需要

  • 问题内容: 我有一个使用100%Java编写的大型现有代码库,但是我想在它的一些新部分中使用Python。我需要进行一些文本和语言处理,而我宁愿使用Python和类似NLTK的库来执行此操作。 我知道Jython项目,但这似乎代表了一种从Python内部使用Java及其库的方法,而不是相反的方式-我对此是否错? 如果没有,那么在Java和Python之间进行交互的最佳方法是什么,这样(理想情况下)

  • 问题内容: Go 的用途是什么?语言文档说它在周围的函数返回时执行。为什么不将代码放在给定函数的末尾? 问题答案: 我们通常用来关闭或释放资源。 周围的函数会在返回之前执行所有延迟的函数调用,即使它会慌乱。如果仅将函数调用放在周围函数的末尾,则在发生紧急情况时将跳过该调用。 而且,延迟函数调用可以通过调用内置函数来处理紧急情况。这不能通过函数结尾处的普通函数调用来完成。 每个延迟的调用都放在堆栈中