Witam, pisze prostą aplikacje która posiada listy i dane studentów na poszczególnych wydziałach. Działa to w oparciu o baze danych.
Mam problem w przypisaniu obiekty typu Student do obiektu typu Student
package swingproject;
....
import swingproject.DataBase.*;
public class Interface extends JFrame {
......
......
......
private List<Faculty> facultiesList = new ArrayList<Faculty>();
private int idStudent = -1;
private int idFaculty = -1;
private void updateDataStudent() {
idStudent = list.getSelectedIndex();
if (facultiesList.get(idFaculty).getStudent().isEmpty() || idStudent < 0) {
name.setText("");
surname.setText("");
id.setText("");
address.setText("");
city.setText("");
} else {
Student tmp = facultiesList.get(idFaculty).getStudent().get(idStudent);
name.setText(tmp.getName());
surname.setText(tmp.getSurname());
id.setText(String.valueOf(tmp.getId()));
address.setText(tmp.getAddress());
city.setText(tmp.getCity());
dateBirth.getModel().setValue(tmp.getDatebirth());
}
}
.......
}
Problem leży dokładnie w linijce
Student tmp = facultiesList.get(idFaculty).getStudent().get(idStudent);
Błąd
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to swingproject.DataBase.Student
klasa Faculty i Student
package swingproject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import swingproject.DataBase.*;
public class Faculty {
private List<Student> students = new ArrayList<>();
private String name;
private int idFaculty;
public Faculty(String name, int idFaculty) {
this.name = name;
this.idFaculty = idFaculty;
}
public String getName() {
return name;
}
public Faculty(String name, List<Student> student) {
this.name = name;
this.students = student;
}
public int getIdFaculty() {
return idFaculty;
}
public List<Student> getStudent() {
return students;
}
public void setStudent(List<Student> student) {
this.students = student;
}
public int getNumberStudents() {
return students.size();
}
public void addStudent(int id, String name, String surname, Date dateOfBirth, String address, String city) throws Exception {
if (id < 1) {
throw new Exception("Bad id");
}
if (name.isEmpty() || surname.isEmpty() || address.isEmpty() || city.isEmpty()) {
throw new Exception("Bad data");
}
students.add(new Student(id, name, surname, dateOfBirth, address, city));
sort();
}
public void removeStudent(int id) {
if (id > -1) {
students.remove(id);
sort();
}
}
public void editStudent(Student student, int index) {
if (index > -1) {
//students.get(index).editData(student.getId(), student.getName(), student.getSurname(), student.getDatebirth(), student.getAddress(), student.getCity());
sort();
}
}
public void sort() {
if (students.size() <= 1) {
return;
}
for (int i = 0; i < students.size(); i++) {
for (int j = 0; j < students.size() - 1; j++) {
if (students.get(j).getId() > students.get(j + 1).getId()) {
Collections.<Student>swap(students, j, j + 1);
}
}
}
}
public int findStudent(int id) {
int index = -1;
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getId() == id) {
index = i;
break;
}
}
return index;
}
}
package swingproject.DataBase;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
@Entity
@Table(name = "STUDENT")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Student.findAll", query = "SELECT s FROM Student s"),
@NamedQuery(name = "Student.findById", query = "SELECT s FROM Student s WHERE s.id = :id"),
@NamedQuery(name = "Student.findByName", query = "SELECT s FROM Student s WHERE s.name = :name"),
@NamedQuery(name = "Student.findBySurname", query = "SELECT s FROM Student s WHERE s.surname = :surname"),
@NamedQuery(name = "Student.findByDatebirth", query = "SELECT s FROM Student s WHERE s.datebirth = :datebirth"),
@NamedQuery(name = "Student.findByAddress", query = "SELECT s FROM Student s WHERE s.address = :address"),
@NamedQuery(name = "Student.findByCity", query = "SELECT s FROM Student s WHERE s.city = :city")})
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "ID")
private Integer id;
@Column(name = "NAME")
private String name;
@Column(name = "SURNAME")
private String surname;
@Column(name = "DATEBIRTH")
@Temporal(TemporalType.DATE)
private Date datebirth;
@Column(name = "ADDRESS")
private String address;
@Column(name = "CITY")
private String city;
@JoinColumn(name = "IDFACULTIES", referencedColumnName = "IDFACULTIES")
@ManyToOne
private Faculties idfaculties;
public Student() {
}
public Student(Integer id, String name, String surname, Date datebirth, String address, String city) {
this.id = id;
this.name = name;
this.surname = surname;
this.datebirth = datebirth;
this.address = address;
this.city = city;
}
public Student(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Date getDatebirth() {
return datebirth;
}
public void setDatebirth(Date datebirth) {
this.datebirth = datebirth;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Faculties getIdfaculties() {
return idfaculties;
}
public void setIdfaculties(Faculties idfaculties) {
this.idfaculties = idfaculties;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Student)) {
return false;
}
Student other = (Student) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return String.valueOf(id) + ", " + name + " " + surname;
}
}