Spring Security 解释SQL表达式

jucafojl  于 2023-01-09  发布在  Spring
关注(0)|答案(1)|浏览(141)

我在浏览GitHub上的spring-security samples,发现了一个类,它本身就是一个仓库,我们在其中使用了@Query注解。

  • 使用的数据库:高级SQL *

我不太清楚查询的内容,特别是m是什么意思,还有m.to_id = ?#{principal?.id }这部分,这个符号下面有红线,显示如下信息:Cannot resolve symbol 'm'
代码:

/**
 * A repository that integrates with Spring Security for accessing {@link Message}s.
 */
@Repository
public interface SecurityMessageRepository extends MessageRepository {
    @Query("SELECT m FROM Message WHERE m.to_id = ?#{principal?.id }")
    List<Message> findAll();
}

下面是用于填充初始数据的data.sql文件(取自示例):

insert into user(id,email,password,firstName,lastName) values (0,'rob@example.com','password','Rob','Winch');
insert into user(id,email,password,firstName,lastName) values (1,'luke@example.com','password','Luke','Taylor');

insert into message(id,created,to_id,summary,text) values (100,'2023-01-05 10:00:00',0,'Hello Rob','This message is for Rob');
insert into message(id,created,to_id,summary,text) values (101,'2023-01-05 11:00:00',0,'How are you Rob?','This message is for Rob');
insert into message(id,created,to_id,summary,text) values (102,'2023-01-05 12:00:00',0,'Is this secure?','This message is for Rob');

insert into message(id,created,to_id,summary,text) values (110,'2023-01-05 10:00:00',1,'Hello Luke','This message is for Luke');
insert into message(id,created,to_id,summary,text) values (111,'2023-01-05 10:00:00',1,'Greetings Luke','This message is for Luke');
insert into message(id,created,to_id,summary,text) values (112,'2023-01-05 10:00:00',1,'Is this secure?','This message is for Luke');

你能解释一下这个SQL表达式是什么意思吗?或者提供一个链接到一些解释这个的文章吗?(因为我甚至不知道如何正确地谷歌它来快速找到答案)。

oxalkeyp

oxalkeyp1#

这个SQL将起作用,m不是表中的列,因此您不能选择它。* 将获得所有列。m用作Message的别名,因此它将与m.to列一起解析。
第一个月

相关问题