我需要创建一个Spring @Formula批注,该批注用来自用户对象的用户ID {user.getId()}填充PROPOSAL.USER_ID。
@Formula("SELECT COUNT(*) FROM PROPOSAL WHERE PROPOSAL.USER_ID = userId")
int numberOfProposals;
如果我使用...则不起作用
@Transient
private Long userId;
尽管它具有其getter和setter:
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()}")
如果有任何文档显示如何操作,我将不胜感激。
答案 0 :(得分:0)
基本上不可能,因为您标记为@Transient
的成员在数据库级别不可访问。 @Formula
批注中的语句仅在数据库级别运行。
所以它们是不同级别的一部分,您不能互相使用。
您可以做的是创建一个自定义查询,并将userId
传递给该查询,以填充实体类。