如何使用来自另一个对象的数据创建休眠查询?



我需要创建一个 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传递给该查询,以便填充实体类。

最新更新