Spring 如何使用来自另一个对象的数据创建hibernate查询?
我需要创建一个Spring@Formula注释,用用户对象中的用户ID{USER.getId()}填充PROPOSAL.USER_IDSpring 如何使用来自另一个对象的数据创建hibernate查询?,spring,hibernate,Spring,Hibernate,我需要创建一个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() {
@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}")
或:
如果有任何文档说明如何操作,我将不胜感激。这基本上是不可能的,因为您标记为
@Transient
的成员在数据库级别无法访问。而@Formula
注释中的语句仅在数据库级别运行
因此,它们是不同级别的一部分,不能相互使用
您可以做的是创建一个自定义查询,并向该查询传递
userId
,以填充实体类。如果您尝试使用¨..=user.id?否,它给了我一个错误。原因是:org.h2.jdbc.JdbcSQLException:列“user.id”找不到。我认为MNDEVCI在他的评论中是正确的。你能用@Query添加示例吗?因为IDE说:此位置不允许使用@Query注释。谢谢你的帮助!如果你提供有关userId
字段及其值设置的更多信息,我可以尝试给出一个示例,现在它对我来说太模糊了。它在ith@Formula(“SELECT SUM(number of points)FROM VOTE WHERE VOTE.USER\u ID=USER\u ID”)。就像这样。好吧,但为什么要将userId
设置为@Transient
。该属性不也应该映射到USER\u ID
列吗?我正在测试,但忘了它。它可以为USER\u ID更改userId的userId(且不产生任何瞬态或任何东西)
@Formula("SELECT COUNT(*) FROM PROPOSAL WHERE PROPOSAL.USER_ID = ?#{this.user.getId()}")