简体   繁体   English

JDBC模板中的Select语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM