我有一个名为CUSTOMER的表,它包含100+ COLOUMNS。但是,我只想选择我在POJO中指定的6个列:
实体POJO:
@Entity
@Data
@Table(name = "CUSTOMER")
public class CustomerEntity {
@Id
@Column(name = "C_ID")
private String customerId;
@Id
@Column(name = "C_KEY")
private String customerKey;
@Column(name = "NAME")
private String name;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@Column(name = "AGE")
private String age;
}NativeQuery:
String query = "select * from CUSTOMER where (C_ID= '1' AND C_KEY= '12') OR (C_ID= '1' AND C_KEY= '13')) AND AGE>25";
Query q = e.createNativeQuery(query,CustomerEntity.class);编辑:出于使用本机查询的原因
选择本机查询的原因:
复杂逻辑:
SELECT * FROM (
SELECT row_number() over(order by C_ID, C_KEY) RN, FEW-COLUMNS(
SELECT * FROM BOOK
WHERE (C_ID, C_KEY) IN (customerId1, customerKey1)
(customerId2, customerKey2)
(customerId3, customerKey3)
.....
(customerIdn, customerKeyn) AND ROWNUM <= 340
)WHERE RN BETWEEN anyNumber and anyNumber
)ORDER BY DESC RN;问题:
如果我使用这个查询,我将得到ORA -00947表或视图不存在异常。
发布于 2017-05-24 10:24:45
你必须使用别名才能让它起作用。否则,持久性提供程序将不知道如何执行匹配:
select c_id as customerId, c_key as customerKey...
from CUSTOMER
where ...别名应该与映射到的实体类的相应字段名完全相同。
https://stackoverflow.com/questions/44155312
复制相似问题