Ошибка исключения JDBC много-к-одному / нулевого указателя - PullRequest
0 голосов
/ 22 ноября 2011

Правильно, так что я работал над этим проектом некоторое время, и я использую JDBC + JSF.

В настоящее время у меня есть 3 DAO, пользователя, группы и группы пользователей.

Мой вопросбыло бы ... как установить связь между 3 классами: пользователь, группы и группы пользователей ??

В моей базе данных UserGroup - это ассоциативная сущность, в которой IDUSer и IDGroup являются основным составным ключом.

Отношение между пользователем и группой пользователей - от 1 до многих.Отношение между группами и UserGroup также равно 1 ко многим, при этом UserGroup имеет отношение «многие к 1» как с пользователем, так и с группами.

Было бы правильно, если я хочу создать отношение между пользователем и UserGroup, Group иUserGroup ??

public class UsuariousGrupos {

Integer id_usuario;
Integer id_grupo;
Grupos  groups;
Usuarious users;

public UsuariousGrupos() {
}

public UsuariousGrupos(Integer id_usuario, Integer id_grupo) {
    this.id_usuario = id_usuario;
    this.id_grupo = id_grupo;
}

public Integer getId_grupo() {
    return id_grupo;
}

public void setId_grupo(Integer id_grupo) {
    this.id_grupo = id_grupo;
}

public Integer getId_usuario() {
    return id_usuario;
}

public void setId_usuario(Integer id_usuario) {
    this.id_usuario = id_usuario;
}

public Grupos getGroups() {
    return groups;
}

public void setGroups(Grupos groups) {
    this.groups = groups;
}

public Usuarious getUsers() {
    return users;
}

public void setUsers(Usuarious users) {
    this.users = users;
}

Кроме того, я проверил мое соединение DAO, и они работают нормально.Я могу отображать имя / описание из моей таблицы базы данных пользователей и таблицы базы данных групп.Однако, поскольку в моей таблице UserGroup хранятся только идентификаторы, я могу отображать только идентификаторы.Я хочу отобразить имя / описание пользователя / группы, связанной с идентификатором.Однако, когда я делаю следующее:

 List<UsuariousGrupos> ugdList = ugd.list() ;
    System.out.println("List of users successfully queried: " + ugdList);
    System.out.println("Thus, amount of usergroups in database is: " + ugdList.size());
    for (int i = 0; i < ugdList.size(); i++) {
        System.out.println("Groups in database are: " + ugdList.get(i).getUsers().getNome());
        System.out.println("Users in database are: " + ugdList.get(i).getGroups().getDescricao());
    }

, я получаю исключение в потоке "main" java.lang.NullPointerException.По-видимому, я не могу получить доступ к объекту «Пользователи и группы» из моего списка групп пользователей: /, что наводит меня на мысль, что я пропускаю какие-то отношения между классами.

В этих строках возникает исключение нулевого указателя:

System.out.println("Groups in database are: " + ugdList.get(i).getUsers().getNome());
System.out.println("Users in database are: " + ugdList.get(i).getGroups().getDescricao()

очевидно, ugdList.get (i) .getUsers () и ugdList.get (i) .getGroups () равны нулю.

Есть мысли по этому поводу?

1 Ответ

0 голосов
/ 23 ноября 2011

Вам необходимо отобразить имя каждого пользователя и перегрузить метод toString класса пользователя следующим образом:

public String toString()
{
return String.format(""%s %s", this.name, this.lastName);
}

Кстати, ugdList.get (i) .getUsers (). GetNome ()); мне кажется неправильным Но используя метод toString, примененный ранее, вы можете сделать это:

for (User user : ugdList.get(i).getUsers())
{
printf(user);
}

НО вы должны протестировать ugdList.get (i) .getUsers (), выполнив шаги до проверьте, что get (i) .getUsers! = null, затем запустите цикл.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...