Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Внешний ключ в Hibernate, Spring, Hibernate, MVC 
:(
    Опции темы
Farik013
Дата 18.1.2016, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.1.2016

Репутация: нет
Всего: нет



Доброе время суток.
POJO
Код

@Entity
@NamedQuery(name = "allOpers", query = "SELECT o FROM Opers o")
public class Opers {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String surname;
    @ManyToOne
    private Filials filials;
 
    public Opers() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    public Opers(int id, String name, String surname, Filials filials) {
        super();
        this.id = id;
        this.name = name;
        this.surname = surname;
        this.filials = filials;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int 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 Filials getFilials() {
        return filials;
    }
 
    public void setFilials(Filials filials) {
        this.filials = filials;
    }
 
    @Override
    public String toString() {
        return "Opers [id=" + id + ", name=" + name + ", surname=" + surname + ", filials=" + filials + "]";
    }
 
}


И есть страница
Код

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Opers</title>
</head>
<body>
    <sf:form modelAttribute="opers"
        action="${pageContext.request.contextPath}/opers"
        method="GET">
        <table border="1" width="50%">
            <tr>
                <td>Id</td>
                <td>Name</td>
                <td>Surname</td>
            </tr>
            <c:forEach items="${Opers}" var="op">
                <tr>
                    <td>${op.id}</td>
                    <td>${op.name}</td>
                    <td>${op.surname}</td>
                </tr>
            </c:forEach>
        </table>
    </sf:form>
</body>
</html>


Контроллер 
Код

@Controller
public class OperController {
    @Autowired
    private OperService operService;
 
    @RequestMapping(value = "/opers/{filialId}", method = RequestMethod.GET)
    public ModelAndView getOpers(@PathVariable("filialId") int filialId) {
        ModelAndView model = new ModelAndView("opers");
        model.addObject("opers", operService.getOperByFilialId(filialId));
        return model;
    }
 
}


При вызове страницы из другой страницы
Код

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/insert">
        <table border="1" width="50%">
            <tr>
                <th>Id</th>
                <th>Name</th>
                <th>Adress</th>
                <th></th>
                <th></th>
            </tr>
            <c:forEach items="${filials}" var="fil">
                <tr>
                    <td>${fil.id}</td>
                    <td><a
                        href="${pageContext.request.contextPath}/opers/${fil.id}">${fil.name}</a></td>
                    <td>${fil.adress}</td>
                    <td><a
                        href="${pageContext.request.contextPath}/update/${fil.id}">Update</a></td>
                    <td><a
                        href="${pageContext.request.contextPath}/delete?id=${fil.id}">Delete</a></td>
                </tr>
            </c:forEach>
        </table>
        <input type="submit" value="insert" name="btnInsert" />
    </form>
</body>
</html>


Мне не выводит данные которые связаны по внешнему ключу с другой таблицей, то есть контроллер не работает. Может я не совсем правильно выразился или может какие то данные не показал, вы скажите что еще добавить.
PM MAIL   Вверх
Farik013
Дата 19.1.2016, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.1.2016

Репутация: нет
Всего: нет



Создав обычный класс, чтоб проверить работу метода

Код

public class TestApp {
    @Autowired
    static OperService operService;

    public static void main(String[] args) {

        Opers opers = operService.getOperByFilialId(2);
        System.out.println(opers);
    }
}


На выходе у меня дает 

Код

Exception in thread "main" java.lang.NullPointerException
    at az.nikoil.test.TestApp.main(TestApp.java:17)


Вот код метода

Код

@Override
    @Transactional
    public Opers getOperByFilialId(int filialId) {

        return operDAO.getOperByFilialId(filialId);
    }


В чем может быть проблема?
PM MAIL   Вверх
a0730
Дата 20.1.2016, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



1. Покажи контроллер, который выкладывает filials в модель.
2. Чтобы @Autowired работал нужно создать контекст.


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Farik013
Дата 21.1.2016, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.1.2016

Репутация: нет
Всего: нет



Контроллер который выкладывает filials

Код

@RequestMapping(value = "filials", method = RequestMethod.GET)
    public ModelAndView getFilials() {
        ModelAndView model = new ModelAndView("home");
        model.addObject("filials", filialService.getAllFilials());
        return model;
    }


Мне нужно, чтоб выводились opers
PM MAIL   Вверх
Farik013
Дата 6.2.2016, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.1.2016

Репутация: нет
Всего: нет



Решил самостоятельно. Запрос работал неправильно. Написав вручную, все заработало как надо было.

Код

@Override
    public List<Opers> getOperByFilialId(int filialId) {
        return getSession().createQuery("FROM Opers where filials.id=" + filialId).list();
    }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1147 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.