在我的数据库操作中使用Spring引导JPA。在我的实体类中,我用我的表映射了每个列。在我的表中,我有很多列,但是我需要在我的查询结果集中选择其中的一些。我不需要做select*fromtable_name
,这给我的应用程序带来了性能问题。
我的实体类:
@Entity
@Table(name = "user_table")
public class UserInformation {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private int userId;
@Column(name = "user_name")
private String userName;
@Column(name = "user_type")
private String userType;
@Column(name = "user_age")
private int userAge;
@Column(name = "is_male")
private boolean isMale;
}
在此之后,我生成了上述类的所有getter和setter。
我的userDAO类
public interface UserInformationRepo extends
JpaRepository<UserInformation, String>{
@Query(value="select user_name from user_table where user_age >
:userAge", nativeQuery=true)
public UserInformation getInfo(int userAge);\
@Query(value="select user_name,userType, user_id from user_table where
user_age > :userAge", nativeQuery=true)
public UserInformation getInfo(int userAge);
}
当我用上面的类运行这个spring boot应用程序时,它显示错误为
结果集中未包含用户id
此错误是因为我没有从查询中选择用户id。
在我的userDAO类中,我有多个函数,每个函数需要不同的列集,但是所有方法的返回类型都应该是UserInformation类。
我的例外结果是,我没有从查询中选择的列在我的result UserInformation对象中应该有空值。
我也搜索了很多资源,但找不到任何相关的答案。
任何帮助。提前谢谢
一种方法是使用userId
和userName
创建UserInformation
的构造函数。
package com.demo.model;
public UserInformation( String userName, String userType, String userId){
this.userName = userName;
this.userType = userType;
this.userId = userId;
}
然后
@Query(value="select new com.demo.model.UserInformation
(user_name,userType, user_id)
from user_table where
user_age > :userAge", nativeQuery=true)
如果为实体创建投影(仅包含必要的属性),最简单的解决方案是:
public interface UserInformationNameProjection {
String getUserName();
}
然后,您可以这样定义存储库方法(您甚至不需要id!):
@Query(value="select user_name from user_table where user_age >
:userAge", nativeQuery=true)
public UserInformationNameProjection getInfo(int userAge);
让Spring Data JPA完成剩下的工作。:)
用户id是用户信息对象中的主键。最好在查询中包含UserInformation对象中的所有列:
public interface UserInformationRepo extends
JpaRepository<UserInformation, String>{
@Query(value="select * from user_table where user_age >
:userAge", nativeQuery=true)
public UserInformation getInfo(int userAge);
@Query(value="select * from user_table where
user_age > :userAge", nativeQuery=true)
public UserInformation getInfo(int userAge);
}
如果你的user_表有大量信息,你可以只列出你关心的列,但一定要包括@Id(主键)。
问题内容: 理想情况下,我需要一个等于 但这是非法的。 我不能使用自动递增的字段。 row_number()是需要选择的行。 我该怎么办? 编辑:嗯,我使用iSql * plus进行练习,出于某些原因,使用limit和auto_increment是非法的。我最终创建了一个序列和一个触发器,并且每次输入一个条目时,ID都增加了1。 问题答案: 您可以使用代替。 如文档所述, 第一个参数指定要返回的第
我假设我可以做这样的事情,但这样会处理乐观锁情况吗(我通过表上的版本列使用它)
我想显示“users”表中两个指定列“first_name”和“pic”的所有值。我正在尝试“Pulk”,但它在echo时显示为json格式。但我需要展示给大家看,一些东西——‘John pic’。求求你,有人帮帮我。这是我在“索引”中的示例代码。刀身php的吼声-
我将html写成 现在我希望如果选项是1,那么它应该被选择为 请帮帮我!!!
问题内容: 我想选择,,从多个选择其中有10个选项。我只想选择这三个选项。 HTML代码: selenium键代码: 我尝试使用此代码。使用此代码,我可以选择第一个选项,即“ P0_ENGLISH”。但是,选择第一个选项后,我得到一个错误: 问题答案: 要从 Multi Select 元素中选择多个 选项 ,可以使用 ActionChains 模拟 Control单击* ,如下所示: *
结果我只想要abc,xyz,jkl。 相同的正则表达式或代码是什么...?