[英]Select statement in JDBC Template
After running program I receive error message: 运行程序后,我收到错误消息:
Caused by: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback;
引起原因:org.springframework.jdbc.UncategorizedSQLException:PreparedStatementCallback; uncategorized SQLException for SQL [SELECT * FROM products WHERE productname = ?];
SQL的未分类SQLException [SELECT * FROM products WHERE productname =?]; SQL state [S0022];
SQL状态[S0022]; error code [0];
错误代码[0]; Column 'categoryname' not found.;
找不到列“类别名称”。 nested exception is java.sql.SQLException: Column 'categoryname' not found.
嵌套异常是java.sql.SQLException:找不到列“类别名称”。
@Repository
public class JdbcProductsDao implements ProductsDao{
private final JdbcTemplate jdbcTemplate;
@Autowired
public JdbcProductsDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
private static final RowMapper<Products> productsRowMapper = (rs, rowNum) ->{
Products products = new Products();
products.setProductid(rs.getLong("ProductID"));
products.setProductname(rs.getString("ProductName"));
products.setSupplierid(rs.getLong("SupplierID"));
products.setCategoryid(new Categories(rs.getString("CategoryName")));
products.setQuantityperunit(rs.getString("QuantityPerUnit"));
products.setUnitprice(rs.getDouble("UnitPrice"));
products.setUnitsinstock(rs.getLong("UnitsInStock"));
products.setUnitsonorder(rs.getLong("UnitsOnOrder"));
products.setReorderlevel(rs.getLong("ReorderLevel"));
products.setDiscontinued(rs.getString("Discontinued"));
return products;
};
public Products findByProductName(String productname) {
String sql = "SELECT * FROM products WHERE ProductName = ?";
return jdbcTemplate.queryForObject(sql, productsRowMapper, productname);
}
public List<Products> sortByProductName(){
String sql = "SELECT * FROM products order by ProductName asc";
return jdbcTemplate.query(sql, productsRowMapper);
}
Table Categories 表类别
@Entity
public class Categories {
@Id
private Long categoryid;
@Column(name = "CategoryName")
private String categoryname;
private String description;
private String picture;
@OneToMany(mappedBy="categoryid")
private List<Products> products;
Table Products 餐桌产品
@Entity
public class Products {
@Id
private Long productid;
@Column(name = "ProductName")
private String productname;
private Long supplierid;
@ManyToOne
private Categories categoryid;
private String quantityperunit;
private Double unitprice;
private Long unitsinstock;
private Long unitsonorder;
private Long reorderlevel;
private String discontinued;
Can You tell me what I'm doing wrong? 你能告诉我我做错了吗?
Problem is solved, I changed select statement to 问题解决了,我将select语句更改为
public Products findByProductName(String productname) {
String sql = "SELECT ProductID, ProductName, SupplierID, CategoryID, QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued FROM products WHERE ProductName = ?";
return jdbcTemplate.queryForObject(sql, productsRowMapper, productname);
}`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.