问题描述
我有问题,需要帮助。
问题是我正在尝试使用jdbctemplate获取查询结果并将其映射到我的File类中。
我的班级文件包含3O属性:LONG,STRING和DATE类型的10个属性。
@Table (name = "UZTFILE",schema = "UTIC")
public class File implements Serializable {
private static final long serialVersionUID = 1L;
@Column (name = "UZTFILE_STRING1")
private String text1;
@Column (name = "UZTFILE_STRING2")
private String text2;
@Column (name = "UZTFILE_STRING3")
private String text3;
@Column (name = "UZTFILE_STRING4")
private String text4;
@Column (name = "UZTFILE_STRING5")
private String text5;
@Column (name = "UZTFILE_STRING6")
private String text6;
......
@Column (name = "UZTFILE_STRING10")
private String text10;
@Column (name = "UZTFILE_NUMBER1")
private Long number1;
@Column (name = "UZTFILE_NUMBER2")
private Long number2;
@Column (name = "UZTFILE_NUMBER3")
private Long number3;
@Column (name = "UZTFILE_NUMBER10")
private Long number10;
--getters and setters and constructors ---
我正在执行的查询:
List <File> files = new ArrayList <File> ();
// Query to execute
String query = "SELECT UZF1.UZTFILE_STRING1 AS INSTRUCCIONDECObro,UZF1.UZTFILE_STRING2 AS COUNTERPART,UZF1.UZTFILE_STRING3 AS CURRENCY VALUE AS UZF1.UZTFILE_NUMBER2,UZF1.UZTFILE_STRING4 AS FORMADECObro,UZF1.UZTFILE_STRING5 AS TIPOCUENTA,UZF1.UZTFILE_STRING6 AS NROCUENTA,UZF1.UZTFILE_STRING7 AS REFERENCE,UZF1.UZTFILE_STRING8 AS TYPEIDENTIFICATION,UZF1.UZTFILE_STRING9 AS NROIDENTIFICATION,UZF1.UZTFILE_STRING10 as NAMES FROM UZTFILE UZF1 ";
// Execution of the query
files = jdbcTemplate.query (query,new BeanPropertyRowMapper <> (File.class));
执行查询时,它不会给我任何错误,但一切都正确,但是在显示结果时,列为空,并且该错误是由于我使用的查询使用别名而别名与名称不匹配类的属性的说明。
,这就是我的问题或查询,因为我无法更改类属性的名称,并且也无法从查询中删除别名,因为使用了不同的查询,并且每个查询都使用了不同的别名。例如:
String query1= "SELECT UZF1.UZTFILE_STRING1 AS INSTRUCCIONDECObro,UZF1.UZTFILE_NUMBER2 AS AGE,MORE FIELDS WITH ALIASES..... FROM UZTFILE WHERE "condicion"";
//Query 2
String query2= "SELECT UZF1.UZTFILE_STRING1 AS NOMBRES,UZF1.UZTFILE_NUMBER2 AS SIZE,MORE FIELDS WITH ALIASES........ FROM UZTFILE Where "condicion";
问题在于BeanPropertyRowMapper无法识别别名,并且我无法修改类或查询的属性,是否有解决方案,或者您建议我做什么?
解决方法
您要么需要使SQL统一,即在调用SQL时使用相同的别名,而且正如您所说,类中的@Column
映射需要匹配查询中返回的列。>
另一种选择是使用query(sql,rowMapper)
,您的rowMapper
将“手动”设置File
类中每一列所代表的内容。