2016-07-07 81 views
0

我有一个从现有数据库表在Netbeans中生成的用户实体。该表有一个用户实体列lastUpdatedByUser。此数据库中的大多数表都有一个lastUpdatedByUser列,并且针对这些实体的查询正确返回一个用户对象作为结果的一部分。JPA递归实体StackOverflowError

Ex。检索FROM ProductionTable WHERE date ='someDate'有一个lastUpdatedByUser对象,显示谁最后更新了表格行和其他用户属性。

如果在web-app中编辑productionTable数据并提交,我需要更新lastUpdatedByUser列。

Users userUpdating = usersService.selectUserEntityByUserId(userId); 
Users userEntity = usersFacade.findSingleWithNamedQuery("Users.findByUserId", parameters); 
SELECT u FROM Users u WHERE u.userId = :userId 

返回一个包含lastUpdatedByUser这是一个User对象包含lastUpdatedByUser这是一个用户对象,它包含一个lastUpdatedByUser对象的用户对象....(我不知道有多少,二十这些行加起来)

后,我坚持这个

productionEntity.setLastUpdatedByUser(userUpdating); 

我得到的Json的StackOverflowError在更新实体

下一个请求

的用户实体定义:

@OneToMany(mappedBy = "lastUpdatedByUser") 
private Collection<Users> usersCollection; 
@JoinColumn(name = "LastUpdatedByUser", referencedColumnName = "UserId") 
@ManyToOne 
private Users lastUpdatedByUser; 
@OneToMany(mappedBy = "lastUpdatedByUser") 
private Collection<Production> productionCollection; 

如何修改,这样,我继续得到用户实体用户对象像生产其他实体的一部分,但只有一个lastUpdatedByUser对象?

感谢您的任何见解。

回答

0

我猜这是我的问题:

@JoinColumn(name = "LastUpdatedByUser", referencedColumnName = "UserId") 

,因为我发现了一个FK users表中,以自己的用户ID

爱重构

======= =========================

丢弃FK从用户表和再生NetBeans中的实体,我得到

private Integer lastUpdatedByUser; 

像它应该是 而不是

private Users lastUpdatedByUser; 

现在,我得到编辑所有具有有效FKS到用户表和代码及...

谢谢您听的实体。