0

クラスに別のクラスフィールドがある場合、Javaでクラス要素をリストするにはどうすればよいですか? 次のようになります。

public class Grad {

private int grad_id;
private **Drzava drzava**;
private String naziv;
private boolean aktivan;
private Set<Korisnik> korisnici = new HashSet<Korisnik>(0);
public Drzava getDrzava() {
    return drzava;
}
public void setDrzava(Drzava drzava) {
    this.drzava = drzava;
}
        public List<Grad> getAllGrad() {

    List<Grad> gradovi = new ArrayList<Grad>();
    try {
        Statement statement = DBConnection.getConnection().createStatement();
        ResultSet rs = statement.executeQuery("select * from grad;");
        while (rs.next()) {
            Grad grad = new Grad();
            grad.setGrad_id(rs.getInt("grad_id"));
        **grad.setDrzava( (Drzava)rs.getObject("drzava"));**/**(HERE IS A     PROBLEM!!)**/
            grad.setNaziv(rs.getString("naziv"));
            grad.setAktivan(rs.getBoolean("aktivan"));
            gradovi.add(grad);
        }




else if (action.equalsIgnoreCase("listGrad")){
        forward = LIST_GRAD;
        request.setAttribute("gradovi", dao.getAllGrad());

これはjspページにあり、エラーはgrad.drzava.nazivにあると思います:

<c:forEach items="${gradovi}" var="grad">
            <tr>
                <td><c:out value="${grad.grad_id}"/></td>
                <td><c:out value="${grad.drzava.naziv}"/></td> 
                <td><c:out value="${grad.naziv}" /></td>
                <td><c:out value="${grad.aktivan}" /></td>

例外: java sql SQLException 列 'drzava' が見つかりません。

答えてくれてありがとう:))

4

1 に答える 1

0
ResultSet rs = statement.executeQuery("select * from grad;");

これにより、grad テーブルの外部キーである "Drzava" テーブルの主キーが返されます。したがって、Drzava クラス オブジェクトを取得するには、次のような別のクエリを再度実行する必要があります。

ResultSet rs = statement.executeQuery("select * from drzava;");

次に、結果の drzava クラス オブジェクトを grad クラス変数に割り当てます。

于 2013-05-17T02:04:41.003 に答える