我需要创建一个 Spring @Formula 注释来填充 PROPOSAL。USER_ID 使用来自 User 对象的 User ID {user.getId((}
。@Formula("SELECT COUNT(*) FROM PROPOSAL WHERE PROPOSAL.USER_ID = userId")
int numberOfProposals;
如果我使用...
@Transient
private Long userId;
虽然它有它的吸气剂和二传手:
public User getUser() {
return user;
}
public Proposal user(User user) {
this.user = user;
return this;
}
public void setUser(User user) {
this.user = user;
}
public Long getUserId() {
return this.user.getId();
}
如果我使用,它不起作用:
@Formula("SELECT COUNT(*) FROM PROPOSAL WHERE PROPOSAL.USER_ID = ?#{this.user.id}")
或:
@Formula("SELECT COUNT(*) FROM PROPOSAL WHERE PROPOSAL.USER_ID = ?#{this.user.getId()}")
如果有任何文档显示如何操作,我将不胜感激。
这基本上是不可能的,因为您标记为@Transient
的成员在数据库级别无法访问。注释中的语句仅在数据库级别运行@Formula
。
所以它们是不同级别的一部分,你不能互相使用。
您可以做的是创建自定义查询并将userId
传递给该查询,以便填充实体类。