我在Netbeans中从现有数据库表生成了一个User实体。该表有一个lastUpdatedByUser列,它是一个User实体。此数据库中的大多数表都具有lastUpdatedByUser列,并且针对这些实体的查询会正确地返回用户对象作为结果的一部分。
实施例。检索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
返回一个User对象,该对象包含一个lastUpdatedByUser,它是一个User对象,包含一个lastUpdatedByUser,它是一个包含lastUpdatedByUser对象的User对象....(我不知道有多少个,有二十行这些添加向上)
我坚持这个
productionEntity.setLastUpdatedByUser(userUpdating);
我在更新实体的下一个请求中得到Json StackOverflowError
gson.toJson(updatedProductionEntity)
用户实体定义:
@OneToMany(mappedBy = "lastUpdatedByUser")
private Collection<Users> usersCollection;
@JoinColumn(name = "LastUpdatedByUser", referencedColumnName = "UserId")
@ManyToOne
private Users lastUpdatedByUser;
@OneToMany(mappedBy = "lastUpdatedByUser")
private Collection<Production> productionCollection;
如何编辑,以便我继续将用户对象作为其他实体(如Production)的一部分,但只有一个用户实体的lastUpdatedByUser对象?
感谢您的任何见解。
答案 0 :(得分:0)
我猜这是我的问题:
@JoinColumn(name = "LastUpdatedByUser", referencedColumnName = "UserId")
因为我在Users表中找到了自己的UserId
的FK爱重构
================================
从Users表中删除该FK并在Netbeans中重新生成实体
private Integer lastUpdatedByUser;
应该是这样的
而不是
private Users lastUpdatedByUser;
现在我可以将所有具有有效FK的实体编辑到Users表和代码中......
感谢收听。