我将为您翻译如下内容,这是关于IT技术的:
实际输出:这里没有显示客户详细信息。
预期输出:在寻找贷款时需要展示客户详细信息。
在这个web服务项目中,我使用了Spring(xml+annotations)和Hibernate(annotations)。以下是数据库关系图、模型以及期望和实际输出:
Customer.java
@Entity
@Table(name="customer")
public class Customer implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="customer_id", unique=true, nullable =false)
long customerId;
@Column(name="name")
String name;
@Column(name="secondary_name")
String secondaryName;
@Column(name="date")
Date date;
@Column(name="address")
String address;
@Column(name="post")
String post;
@Column(name="pin")
String pin;
@Column(name="phone")
String phone;
@OneToMany(fetch=FetchType.LAZY, mappedBy="customer", cascade=CascadeType.ALL)
@JsonManagedReference
Set<Loan> loans = new HashSet<Loan>();
//constructors, getters and setters
}
Loan.java
public class Loan implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="loan_id", nullable=false, unique=true)
long loanId;
@ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="customer_id", nullable = false)
@JsonBackReference
Customer customer;
@Column(name="date", nullable=false)
Date date;
@Column(name="amount", nullable=false)
double amount;
@OneToMany(fetch=FetchType.LAZY, mappedBy="loan", cascade=CascadeType.ALL)
@JsonManagedReference
List<Item> items = new ArrayList<Item>();
//constructors, getters, setters
}
Item.java
public class Item implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="item_id", nullable=false, unique=true)
long itemId;
@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name="loan_id", nullable = false)
@JsonBackReference
Loan loan;
@Column(name="name", nullable=false)
String name;
@Column(name="weight", nullable=false)
double weight;
//constructors, setters, getters
}
实际输出:这里没有显示客户详细信息。
{
"loanId":4,
"date":1484937000000,
"amount":10000.0,
"items":[
{
"itemId":3,
"name":"Item1",
"weight":10.0
},
{
"itemId":4,
"name":"Item2",
"weight":20.0
}
]
}
预期输出:在寻找贷款时需要展示客户详细信息。
{
"loanId":4,
"customer":{
"customerId":2,
"name":"Prem",
"address":"Street,State"
},
"date":1484937000000,
"amount":10000.0,
"items":[
{
"itemId":3,
"name":"Item1",
"weight":10.0
},
{
"itemId":4,
"name":"Item2",
"weight":20.0
}
]
}
我可以从数据库中获取客户详细信息,但使用Jackson Json无法加载它。 如果我删除@JsonManagedReference,则会产生循环引用。 如果我删除@JsonBackReference,则输出没有影响。 完整的代码在:https://github.com/liwevire/TM_Service 提前致谢。
{"loanId":2,"customer":{"customerId":1,"name":"Premkumar","secondaryName":"T","date":1484663297000,"address":"Sethu Road","post":"PVI","pin":"614804","phone":"9876543210","loans":[2,{"loanId":3,"customer":1,"date":1484591400000,"amount":20.0,"items":[{"itemId":2,"loan":3,"name":"L2","weight":1.0}]},{"loanId":4,"customer":1,"date":1484937000000,"amount":10000.0,"items":[{"itemId":3,"loan":4,"name":"Item1","weight":10.0},{"itemId":4,"loan":4,"name":"Item2","weight":20.0}]}]},"date":1484591400000,"amount":40.0,"items":[{"itemId":1,"loan":2,"name":"PT1","weight":1.0}]}
- liwevire