我有用户表,列id, mname, firstname, lastname, age(5列)使用Spring data jpa我只需要获取id, firstname, age(只有3列)
实用性低于user.java
@Entity
@Table(name = "user")
public class User implements Serializable {
private static final long serialVersionUID = -3009157732242241606L;
@Id
private long id;
@Column(name = "mname")
private String mName;
@Column(name = "firstname")
private String firstName;
@Column(name = "firstname")
private String firstName;
@Column(name = "lastname")
private String lastName;
@Column(name="age")
private int age;
//constructor with fileds
user2.java contains the fileds
private Long id;
private String firstname;
private int age;
//getter and setter
UserRepository.java
public interface UserRepository extends CrudRepository<User, Long> {
@Query(value="SELECT usr.id as id,usr.firstname as firstName, usr.age as age FROM user usr WHERE usr.id=?1", nativeQuery=true)
List<User2> getUserDetailsByUserId(Long id);
}
在科尔索勒中收到以下错误:
org.springframework.core.convert.ConverterNotFoundException:找不到能够从类型[java.math.BigInteger]转换为类型[com.user.entity.User2]的转换器
检查代码时得到错误:
无法将值“{403,firstnnnnnnn,26}”从类型[java.lang.Object[]]转换为类型[com . user . entity . user 2];
有没有办法把值映射到user2(非表实体)?
您应该使用投影:
基于接口:
public interface UserProjection {
Long getId();
String getFirstname();
Integer getAge();
}
public interface UserRepository extends CrudRepository<User, Long> {
List<UserProjection> findById(Long id);
}
基于类别(DTO):
@Value // It's Lombok annotation
public class UserDto {
Long id;
String firstname;
Integer age;
}
public interface UserRepository extends CrudRepository<User, Long> {
List<UserProjection> findById(Long id);
List<UserDto> getById(Long id);
}
我正试图找到在ORM上映射我的数据的最佳方法。我有一个从MySQL数据库中获取数据的查询 用spring boot和spring的数据获得这些数据的最优方法是什么?? 我应该使用@query注释并执行它还是以某种方式为Equipment and Devices表创建实体,然后使用JPQL/HQL将表连接到查询中,但是我应该如何映射结果? 提前道谢。
我在我的项目中使用Spring Data JPA和Hibernate JPA提供程序。在我的服务中,我有一个方法,它将一个实体保存在数据库中,而不是使用返回的对象,我试图获取关于该实体的更多细节。因此,无法获取详细信息。在日志中,我只看到insert语句,而没有select详细信息。 下面是我的代码: 更新:我从服务和测试中删除了@Transactional annotaion。现在,当我保存一个
我有一个Spring批处理应用程序,需要从4个表中进行选择。问题是,我无法使用关系,将编写Enricher来选择完整数据。 目前我有几个问题: 是否可以以简单的方式从JpaRepository映射非实体(POJO)。我看到了的示例。我正在寻找自动映射(也许是JPA,而不是Spring Data)。我可以用结果精确地制作列名,但它不起作用。 将POJO标记为实体没问题,但有问题。实体需要。这对我来说
我在Spring boot版本1.3.6中使用Spring Data JPA。 null 这将返回父实体,而不是子实体。 知道怎么做吗?
在我的Spring Boot应用程序中,我使用Spring data jpa。在实体中,我需要从配置中选择架构名称,架构将发生变化,并且需要可配置。我试过下面的但不管用 模式。名称在应用程序中定义。属性文件 我收到“无法提取结果集”错误 有没有办法做到这一点? ===================编辑===============
我有父实体和子实体之间的和关系。 我有这样的孩子 保存此数据后,数据库看起来如下所示, 我的问题是,为什么child的主键是2而不是1?在子表中,主键可以是1,外键对父表的引用可以是1。当我再添加一个父项时,表如下所示, 是我做错了什么,还是这是我预期的行为?