我正在尝试将@ResponceBody 从我的数据库发送到前台。我使用 spring data JPA,spring-boot 等。 我创建了一个实体“Account”、“Transaction”、“TransactionAccount”、“TransactionAccountPK” 我在账户和交易之间有多对多关系,我必须将特殊数据写入表 TransactionAccount。它的区域称为“发件人”,此数据应有助于识别谁的帐户是发件人或开始交易。这就是我在链接表“transaction_account”中使用复合主键的原因。
我创建所有实体、存储库、服务和控制器。所以我在哪里尝试从列表中接收 Json
使用调试器,我确信我可以访问嵌套实体,但我必须将它们发送到前面。我该怎么做?
下面的实体“Account”、“Transaction”、“TransactionAccount”、“TransactionAccountPK” 我在实体“TransactionAccount”中实现了与复合主键的多对多关系
实体账户
@Entity
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "account", cascade = CascadeType.ALL)
@JsonManagedReference
private List<TransactionAccount> transactionAccounts = new ArrayList<>();
// no argsconstructor + getters + setters + toString + equals + hashcode -> below
实体交易
@Entity
public class Transaction {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long value;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "transaction", cascade = CascadeType.ALL)
@JsonManagedReference
private List<TransactionAccount> transactionAccounts;
// no argsconstructor + getters + setters + toString + equals + hashcode -> below
复合主键 TransactionAccountPrimaryKey 的类(通过规范 JPA impl Serializable 等)
public class TransactionAccountPK implements Serializable {
private Transaction transaction;
private Account account;
// no argsconstructor + getters + setters + toString + equals + hashcode -> below
实体交易账户
@Entity
@IdClass(TransactionAccountPK.class)
@Table(name = "transaction_account")
public class TransactionAccount {
@Id
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JsonBackReference
@JsonProperty
@JoinColumn(name = "transaction_id")
private Transaction transaction;
@Id
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JsonProperty
@JsonBackReference
@JoinColumn(name = "account_id")
private Account account;
private boolean sender;
// no argsconstructor + getters + setters + toString + equals + hashcode -> below
所以我为我所有的实体创建了 JpaRepositories、Services 和 RestControllers。 在我将 GET 请求(例如)发送到 http 地址“/transactionAccount/all”的地方,我的控制器方法将收集实体发送给我。
@GetMapping("transactionAccount/all")
public List<TransactionAccount> getAll() {
return transactionAccountService.getAllTransactionAccountFromRepo();
}
但是在 PostMan 的 Json answer 中我只看到了一部分数据。 我收到了一个集合实体的答案,但 Jeckson 并没有解析所有这些实体。 作为一个例子,我重新收集这样的数据 Json:
[
{
"sender": true
},
{
"sender": false
},
{
"sender": false
},
]
我尝试使用@JsonProperty 更改我的实体,但它不起作用。 所以我希望从我的 Json 中的实体 TransactionAccount 中重新获取完整数据。这意味着 TransactionAccount 实体包括交易和账户,我想在我的 Json 视图中看到它们。
使用调试器,我确信我可以访问嵌套实体,但我应该将它们发送到前面。 我该怎么做?