我有一条我不明白的错误消息。该消息是下一个“java.sql.SQLException:列索引超出范围,2 > 1” 请问我的问题是不是来自我的请求sql?
String req = "Select A.CodeA from album A, collabo C where A.CodeA = C.CodeA order by 1 ";
ResultSet resu = ConnexionMySQL.getInstance().selectQuery (req);
try {
while (resu.next())
{
myList.add (new Appareil(resu.getString(1),
new Album (resu.getString(2))));
}
}
或者也许在我的文件 TableModel Appareil 中?我有一列“识别”,只是我不明白为什么它不起作用?
private String[] columnNames = {"Identification"};
private ArrayList <Appareil> myList;
public TableModelAppareils (ArrayList myList)
{
this.myList = myList;
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
//System.out.println("row count : " + myList.size());
return myList.size();
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
@Override
public Object getValueAt(int row, int col) {
Appareil myApp = myList.get(row);
switch (col)
{
case 0 : return myApp.getAppAlb().getCodeA();
}
return null;
}
@Override
public Class getColumnClass(int c) {
switch (c)
{
case 0 : return String.class;
}
return null;
}
public void setMyList (ArrayList myList)
{
this.myList = myList;
this.fireTableDataChanged();
}
public ArrayList <Appareil> getMyList ()
{
return myList;
}
public Appareil getMyList (int index)
{
return myList.get(index);
}
非常感谢
您正在代码中使用
ResultSet
访问 resu.getString(2)
中的第二列,但是您只是在选择查询中选择一列 A.codeA
就我而言,在使用 EclipseLink 时,问题是
@MappedSuperclass
类包含 protected
字段并继承类定义的同名字段。在数据库中,只有一列具有该名称。
我不熟悉 EclipseLink 如何处理实体字段,但是两个相同类型、相同名称字段的问题导致在某些情况下抛出此错误。
映射超类:
@MappedSuperclass
public abstract class PersistentObject {
@Id
@GeneratedValue
protected Long id;
@Column(nullable = false)
protected boolean alive = true;
}
继承类:
@Entity
public lass MyObj extends PersistenObject {
@Column(nullable = false)
private boolean alive = true;
}