java - 我在使用 JPA 从 mssql 从关系表中获取数据时遇到问题
问题描述
我在使用 JPA 从关系表中获取数据时遇到问题。我相信我的问题是我对注释的使用。我对此有点陌生,希望得到一些指导。
我之前遇到过一些问题,现在我正在度假,我真的很想学习图片实体
@Entity
@Table(name = "Picture")
public class Picture {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@NotNull
private int id;
@Column(name = "path")
@NotNull
private String path;
@ManyToOne
@JoinColumn(name = "portfolio_id", nullable = false)
private Portfolio portfolio;
and getters, setters.
投资组合实体
@Entity
@Table(name = "Portfolio")
public class Portfolio {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
@NotNull
private int id;
@Column(name = "Address")
@NotNull
private String address;
@Column(name = "Description")
@NotNull
private String description;
@Column(name = "Service")
@NotNull
private String service;
@OneToMany(mappedBy = "portfolio")
private Set<Picture> pictures;
在投资组合表中我有这个对象
id address description service
2 Köpenhamnsvägen 33B some desc Full-Staging
在图片表中我有这个对象
id path portfolio_id
1 https://bild.se 2
当我执行一个触发 repository.findAll 的简单获取请求时,我得到以下输出:
这就像这个嵌套对象的 5000 行。怎么来的?
此致!
解决方案
这是因为你有一个双向映射,所以它涉及到一个递归。要解决此问题,只需尝试将@XmlTransient (JAX-B) 或@JsonbTransient/@JsonIgnore (Jackson) 添加到其中一个字段。这将使它在您的后端/RESTful 服务器的 JSON 表示中“不可见”。
@ManyToOne
@JoinColumn(name = "portfolio_id", nullable = false)
@XmlTransient/@JsonbTransient/@JsonIgnore (try all 3 annotations, since I dont know what implemantation of JAX-RS you are using
private Portfolio portfolio;
或者你可以为 Set 做:
@OneToMany(mappedBy = "portfolio")
@XmlTransient/@JsonbTransient/@JsonIgnore //again: try them out, I don't know your implementation
private Set<Picture> pictures;
然而,同时为两者做这件事并不是一个好主意,因为结果你不会在请求中看到任何东西。
推荐阅读
- php - 将 Array String 转换为 Int 总是得到 return int(1)
- oracle - Oracle SQL Developer 无法检测到 Oracle 钱包中的服务
- typo3 - TYPO3 t3events and readable URLs
- elasticsearch - Elasticsearch 快照无法在 DFS 挂载驱动器上完成
- c# - .NET 后台线程如何检测到主应用程序正在关闭?
- oracle - 在 SQL Developer 中创建新类型时出错
- r - 使用 saveWorkbook(来自 openxlsx)得到错误
- reactjs - 无法将 multipart/form-data 发送到 nodejs 服务器
- javascript - 如果 div 内的元素超过 div 宽度会发生什么
- angular - 编译期间找不到角度导出的枚举