java - Spring Boot:使用外键执行@query
问题描述
我正在尝试使用如下的外键获取 bean:
-- 第一个包含外键的 bean (user_id : id):
@Entity
@Table
public class Class_1{
@Id
@SequenceGenerator(
//code
)
@GeneratedValue(
//code
)
private Long id;
@OneToOne
@JoinColumn(name = "user_id", referencedColumnName = "id")
private User user;
/**
* constructors , getters and setters, ... */
}
- 我想使用外键填充的第二个 bean:
@Entity
@Table
public class User{
@Id
@SequenceGenerator(
// code
)
@GeneratedValue(
//code
)
private Long id;
/**
* attributes, constructors , getters and setters, ... */
}
这是我的表格:
Table Class_1
+ ID + USER_ID +
+----+---------+
+ 1 + 1 +
Table User
+ ID + PARAM_1 + PARAM_2 + ... + PARAM_N +
+----+---------+---------+-----+---------+
+ 1 + value_1+ value_2 + ... + value_n +
现在这是我尝试执行的查询:
@Query("SELECT * FROM CLass_1 c WHERE c.user_id.id=?1")
public List<Class_1> findClass_1ByUser(Long userId);
或(但仍然不起作用:
@Query("SELECT * FROM CLass_1 c WHERE c.user_id=?1")
public List<Class_1> findClass_1ByUser(Long userId);
@Query("SELECT * FROM CLass_1 c WHERE c.user=?1")
public List<Class_1> findClass_1ByUser(User user);
异常:查询方法 public abstract java.util.List package.class_1.Class_1Repository.findClass_1ByUSer(java.lang.Long) 的验证失败!
有什么帮助吗?
提前谢谢你:)
解决方案
由于您声明了HQL查询,您可以将 替换*
为对象别名SELECT c FROM CLass_1 c WHERE c.user_id=?1
或删除SELECT
例如FROM CLass_1 c WHERE c.user_id=?1
推荐阅读
- varnish - 当清漆中有多个设置 cookie 请求时,如何获取设置的 cookie 值?
- excel-formula - 在与两列表中的单词匹配的列中查找关键字并返回第二列中的值
- reactjs - 在同一台服务器上托管 Django 和 React?
- c# - 如何将值从子组件(RenderFragment)传递到 C# Blazor 中的父页面?
- sql - PowerApps:UpdateIf 只更新前 100 条记录(SQL-Datasource)
- api - 无法访问 Maximo API 的文档?
- mediawiki - 使用修订 ID 构建修订对象
- python - 使用 Python 将音频的非语音部分静音/静音(语音活动检测)
- vue.js - 访问 Vue3 全局组件
- matrix - Ada 中的 HowTo 和多维矩阵