Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何使用来自另一个对象的数据创建hibernate查询?_Spring_Hibernate - Fatal编程技术网

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

Spring 如何使用来自另一个对象的数据创建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() {

我需要创建一个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}")
或:


如果有任何文档说明如何操作,我将不胜感激。

这基本上是不可能的,因为您标记为
@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()}")