假设我有两个实体:
@Entity
public class Column {
....
}
@Enity
public class Table {
...
@OneToMany(fetch=FetchType.EAGER)
@JoinColumn
private List<Column> column;
}
我有一个服务类,它与这两个实体一起工作:
@Service
public class JDBCServiceImpl {
public void writeColToFile(DataSource dataSource, Table table) {
try (Connection connection = dataSource.getConnection()) {
int countColumns = table.getColumn.size();
List<String> columnLst = new ArrayList<>(countColumns);
for (int i = 0; i < countColumns; i++) {
columnLst.add(table.getColumn().get(i).getName());
}
.........
ResultSet resultSet = preparedStatement.executeQuery();
for (int i = 0; i < countColumns; i++) {
columnFiles[i] = new File(tableDir.getAbsolutePath() + "\\" +
columnLst.get(i) + ".txt"); // here I receive exception
}
}
}
我还想通过JUnit测试我的服务。
public class TestService {
@Test
public testJDBCService() {
Column col1 = new Column;
col1.setName("a");
ColumnInfo col2 = new ColumnInfo();
col2.setName("b");
List<Column> allCols = new ArrayList<>();
allCols.add(col1);
allCols.add(col2);
//
Table table = new Table();
table.setName("table1");
table.setColumn(allCols);
...
jdbcService.writeColToFile(dataSource, table);
}
}
所以当我运行测试时,我会收到下一个异常:
org.postgresql.util.PSQLException:结果集未正确定位,
也许你需要下一个电话。在
org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2888)
在
org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1963)
在
service.loader.impl.JDBCServiceImpl.writeColToFile(JDBCServiceImpl.java:73)
从代码中,我看到在尝试遍历包含
column.getName()
对象的列表时抛出了异常(在这个字符串上:columnLst.get(i)
)。那么如何解决这个问题呢?提前谢谢。 最佳答案
抱歉,这个数组没有正确初始化,现在一切正常。