【发布时间】:2021-12-22 03:40:22
【问题描述】:
我正在尝试使用原生 SQL 查询仅将某些字段映射到实体对象:
@NamedNativeQuery(name = "CustomerEntity.findOnlyNameAndPhoneFromCustomer", query = "select customer_name, customer_email from customer",
resultSetMapping = "nativeMapping")
@SqlResultSetMappings(value = {
@SqlResultSetMapping(name = "nativeMapping",
entities = {
@EntityResult(
entityClass = CustomerEntity.class,
fields = {
@FieldResult(name = "name", column = "customer_name"),
@FieldResult(name = "email", column = "customer_email")
}
)})})
@Entity
class CustomerEntity {
//getter and setter fields
@Column(name="customer_name")
private String name;
@Column(name="customer_email")
private String email;
@Column(name="address")
private String adddress;
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Access(AccessType.PROPERTY)
@Column(columnDefinition = "VARCHAR(36)", name = "customer_guid")
@Type(type = "uuid-char")
private UUID guid;
@Embedded
private AuditFields audit;
}
存储库:
@Query(nativeQuery = true)
List<CustomerEntity> findOnlyNameAndPhoneFromCustomer();
我不想将customer 表中存在的所有字段都映射到CustomerEntity,我只是投影某些字段。
这给了我这样的错误:
17:44:37.841 [ERROR] o.h.e.j.s.SqlExceptionHelper - The column name address2_6_0_ is not valid.
我的表中没有名为address2_6_0_的列,但是有一个名为address的列,为什么这里要重命名和引用地址列?
我只引用customer_name 和customer_email。
发生了什么事?
谢谢。
【问题讨论】:
-
您的查询为空! @Query(nativeQuery = true)
-
@SimonMartinelli 它在
@NamedNativeQuery中
标签: spring-boot hibernate jpa spring-data-jpa hibernate-mapping