【发布时间】:2021-01-21 07:32:21
【问题描述】:
我基本上想要做的是运行一个查询并将结果放入类Account 的对象中。需要强调的非常重要的是,该查询在未映射为@Entity 的两个表之间执行联接。那我该怎么做呢?
这是我的 FooRepository.java 类
@Repository
public interface FooRepository extends JpaRepository<Foo, Long> {
Foo findById(Long id);
@Query(value = "SELECT Q1.ACCOUNT_NAME," +
"Q2.GROUP_NAME " +
"FROM USERS_DEV Q1\n" +
"JOIN USERS_GROUPS Q2 ON Q1.ACCOUNT_NAME = Q2.ACCOUNT_NAME\n" +
"WHERE LOWER(Q1.ACCOUNT_NAME) = 'john.pit'", nativeQuery = true)
List<Account> getAllAccounts();
那么如何更改我的查询以获得所需的结果?
这是我的 Account.java 类
public class Account {
String samAccountName;
String groupName;
public Account(String accountName, String groupName) {
this.accountName = accountName;
this.groupName = groupName;
}
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
}
【问题讨论】:
-
尽可能避免使用
nativeQuery。也就是说,如果您适当地映射属性名称,这 应该 工作(常量大小写不再是默认值)。
标签: java sql spring hibernate jpql