java - 严重:没有名为“PAYMENTDATE”的列
问题描述
我使用 NetBeans 来制作我的 Java 项目。在我的数据库表或 DTO 中,它们都有一个名为“paymentDate”的列。我不明白为什么它会发送此错误。奇怪的是,当我将“PAYMENTDATE”更改为“DATE”时,系统会向我发送另一个错误:严重:没有名为“CLIENTORDERID”的列。
客户订单代码:
package dbase;
import dto.ClientDTO;
import dto.clientOrderDTO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
public class ClientOrder {
private static final String PERSON_ORDER = "SELECT clientName, orderName, paymentDate AS Date "
+ "FROM Client JOIN clientOrder ON Client.id = clientOrder.clientId "
+ "WHERE Client.id = ? ";
public ArrayList<clientOrderDTO> findCurrentClientOrderForClient(ClientDTO client) throws SQLException{
ArrayList<clientOrderDTO> list = new ArrayList<>();
Connection con = DB_Manager.getConnection();
try{
PreparedStatement stmt = con.prepareStatement(PERSON_ORDER);
stmt.setInt(1, client.getId());
ResultSet rs = stmt.executeQuery();
while(rs.next()){
Calendar paymentDate = Calendar.getInstance();
paymentDate.setTime(rs.getDate("PAYMENTDATE"));
clientOrderDTO order = new clientOrderDTO(
rs.getInt("CLIENTORDERID"),
client,
rs.getString("ORDERNAME"),
paymentDate
);
list.add(order);
}
con.close();
}
catch (NullPointerException npe)
{
System.err.println("No connection available");
}
catch (SQLException sqle)
{
System.err.println(sqle.getMessage());
}
return list;
}
}
创建表
CREATE TABLE Client(
id integer not null primary key generated always as identity (start with 1, increment by 1),
clientName varchar(20) not null,
username varchar(10) not null unique,
pwd varchar(50) not null
);
CREATE TABLE clientOrder(
id integer not null primary key generated always as identity (start with 1, increment by 1),
clientId integer not null,
orderName varchar(20) not null,
paymentDate Date not null,
constraint client_FK foreign key(clientId) references Client(id)
);
DTO:
package dto;
import java.io.Serializable;
public class ClientDTO implements Serializable
{
private final int id;
private final String name;
private final String username;
private final String password;
public ClientDTO(int id, String name, String username, String password){
this.id = id;
this.name = name;
this.username = username;
this.password = password;
}
public int getId(){
return id;
}
public String getName(){
return name;
}
public String getUsername(){
return username;
}
public boolean passwordMatches(String pwd){
return password.equals(pwd);
}
}
package dto;
import java.io.Serializable;
import java.util.Calendar;
import javax.inject.Named;
@Named(value = "clientOrder")
public class clientOrderDTO implements Serializable{
private final int id;
private final ClientDTO client;
private final String orderName;
private Calendar paymentDate;
public clientOrderDTO(int id, ClientDTO client, String orderName,Calendar paymentDate){
this.id = id;
this.client = client;
this.orderName = orderName;
this.paymentDate = paymentDate;
}
public int getId(){
return id;
}
public ClientDTO getClient(){
return client;
}
public String getOrderName(){
return orderName;
}
public Calendar getPaymentDate(){
return paymentDate;
}
public void setPatmentDate(Calendar paymentDate){
this.paymentDate = paymentDate;
}
}
解决方案
在您的查询中,您已将该列别名paymentDate
为Date
:
paymentDate AS Date
所以你应该使用的列名是Date
.
列表中也没有名称或别名CLIENTORDERID
的SELECT
列。如果要使用列的值,则该列必须出现在SELECT
列表中,以便查询返回。
推荐阅读
- javascript - 渲染 D3 分层边缘捆绑
- php - AWS SES SMTP 电子邮件有效。AWS SES API 不发送电子邮件
- .net-core - .Net Core 或 Mono 包含更多命名空间?
- python - 使用 read_csv 方法读取 csv 数据时如何修复 ParseError?
- python - pandas时间序列索引和statsmodel中的频率
- qt - 使用 CMAKE_PREFIX_PATH 进行多配置构建
- java - 如何使用 Jsoup 库获取对象的所有详细信息并将其保存到 bean?
- python - 如何在某些条件下获取特定日期之前的行数
- node.js - 无法通过 Docker 运行(Linux 容器)或创建映像(Windows 容器)Gatsby React 站点(win 二进制文件错误,匹配清单错误)
- machine-learning - 如何在 Pytorch 的高级库中实现参数化元学习器?