powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вывод информации на jsp страницу из 2 таблиц
14 сообщений из 14, страница 1 из 1
Вывод информации на jsp страницу из 2 таблиц
    #38299116
UserQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем ситуация такая. Надо вывести на jsp страницу выборку из 2 таблиц. А именно есть JPQL запрос

Код: plsql
1.
2.
3.
4.
@NamedQuery (
                 name = "findLastFiveTransaction",    
                 query = "select c, b from Categorietype c, Balance b  where c.user = :user and b.user = :user"
                 )



Всё что выбрало передаю в List

Код: java
1.
2.
3.
public List getUserTransaction(User user) {
    return em.createNamedQuery("findLastFiveTransaction").setParameter("user", user).getResultList();
    }



и сервлетом уже передаю на jsp страницу

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<table border="1">

  <tr>
    <th>Sum</th>
    <th>Descrip</th>
    <th>Name</th>
  </tr>
<c:forEach items="${result}" var="r">
  <tr>
    <td> ${r.sum} </td>
    <td> ${r.descrip} </td>
    <td> ${r.name} </td>
  </tr>
</c:forEach>
</table> 



В результате получаю ошибку когда пытаюсь вывести на страницу

Errororg.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "sum"

Выяснил что туда уходит объекты целые, но как сделать из него читаемый вид не знаю. Если делать это для отдельного сущности, то там достаточно переопределить метод toString.

Как правильно это сделать?

Спасибо.
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299120
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UserQ, я вообще Java не знаю, но немного знаю SQL, поэтому сразу вижу что в запросе два поля: категория (или что-то подобное) и баланс, а на страницу Вы пытаетесь вывести три поля: сумма (наверное это баланс?), какой-то дескриптор и имя пользователя.
Переделайте запрос в соответствие с выводимой информацией и все будет работать...
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299121
UserQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос работает верно. Я проверял в JPQL Editor от NetBeans. Могу переписать, что соответственно и пробовал, разные варианты. На конечный результат не влияло позитивно. По этому тут проблемы у меня дальше запроса, а именно между сервлетом и передачей на jsp страницу.

Можно и такой вариант

Код: plsql
1.
select c.name, b.descirp, b.sum from Categorietype c, Balance b




Могу ещё показать мои сущности

Сущность Balance
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@Entity
    @NamedQuery (name = "findLastFiveTransaction",
    query = "select c, b from Categorietype c, Balance b  where c.user = :user and b.user = :user")
    public class Balance implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private String id;

    private BigDecimal sum;
    @Column(name="Description")
    private String descrip;



Сущность Categorietype

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@Entity
public class Categorietype implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private String id;

    private String name;

    //bi-directional many-to-one association to Balance
    @OneToMany(mappedBy="categorietype")
    private List<Balance> balances;

    //bi-directional many-to-one association to User
    @ManyToOne
    @JoinColumn(name="UserID")
    private User user;
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299137
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторselect c.name, b.descirp, b.sum from Categorietype c, Balance b ...

уже более правильно, только порядок полей должен быть как в выводе на страницу:

select b.sum, b.descrip, c.name ....
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299144
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторselect c.name, b.descirp, b.sum from Categorietype c, Balance b ...

уже более правильно, только порядок полей должен быть как в выводе на страницу:

select b.sum, b.descrip, c.name ....
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299156
UserQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
d7iавторselect c.name, b.descirp, b.sum from Categorietype c, Balance b ...

уже более правильно, только порядок полей должен быть как в выводе на страницу:

select b.sum, b.descrip, c.name ....

Как бы там ни было, к положительному результату это не привело.
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299185
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если убрать запрос и заменить его каким нибудь mock'ом то работает? имхо запрос не при делах
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299188
UserQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
just_vladimir,

Проблема именно с выводом данных из 2 таблиц. Однотабличные выводы работаю на ура.

К примеру

Код: plsql
1.
SELECT b FROM Balance b 



Всё работает и выводит данные как надо. Могу брать из возвращаемого значения какие угодно поля. Правда при таком пользовался лишь типизированным списком List<Balance>
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299193
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос то что то типо List<Object[]> возвращает? Сделайте такой mock да научитесь его выводить. Нет возможности по быстрому проверить, как это правильно провернуть в jstl. В край всегда можно через скриплет нафигачить )))
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299194
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю, конечно, java, но что-то в сущностях странное...
Я не вижу там описания полей user, по которым делается выборка (параметры).
И вообще не вижу связки (join) между этими двумя таблицами по полю user (есть только UserID)...
Похоже что напутано именно там...
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299201
UserQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
just_vladimirЗапрос то что то типо List<Object[]> возвращает? Сделайте такой mock да научитесь его выводить. Нет возможности по быстрому проверить, как это правильно провернуть в jstl. В край всегда можно через скриплет нафигачить )))

List<Object> пробовал, на что то ругалось, только на что именно не помню. В общем не работало. Если я вывожу всё в сервлет, не передавая на страницу получаю

[[Ljava.lang.Object;@61e4a532, [Ljava.lang.Object;@6a19a7d3,

Те ему не хватает переопределённого метода toString. Как это исправить не знаю. Если его разобрать на части, в сервлете, выводит данные как те что надо.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
			List all =  balance.getUserTransaction(user);
			PrintWriter out = response.getWriter();
			out.print("<html>");
			Iterator i = result.iterator();
			while (i.hasNext()){
				Object[] o = (Object[]) i.next();
				for (int j = 0; j < o.length; j++) {
					out.print("<br>" +o[j]);
				}



Этот код выведет в сервлет данные из запроса.
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299204
UserQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
d7iЯ не знаю, конечно, java, но что-то в сущностях странное...
Я не вижу там описания полей user, по которым делается выборка (параметры).
И вообще не вижу связки (join) между этими двумя таблицами по полю user (есть только UserID)...
Похоже что напутано именно там...

Не думаю что там напутано, хотя может быть. Делал всё автоматом Eclipse, до этого нареканий не было. Было написан несколько методов, таких как регистрация и логин, всё работало корректно, но опять же там была использована одна таблица.

У них связь идёт по другому полю

Извиняюсь не всё ставил, вот так правильно

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
package ua.home.model;

import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;


/**
 * The persistent class for the balance database table.
 * 
 */
@Entity
public class Balance implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private String id;

	
        @Column(name="Sum")
	private BigDecimal sum;
	
	@Column(name="Description")
	private String descrip;
	
	//bi-directional many-to-one association to Categorie
	@ManyToOne
	@JoinColumn(name="CategorieID")
	private Categorie categorie;

	//bi-directional many-to-one association to Categorietype
	@ManyToOne
	@JoinColumn(name="TypeID")
	private Categorietype categorietype;

	//bi-directional many-to-one association to User
	@ManyToOne
	@JoinColumn(name="UserID")
	private User user;

	
}



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
package ua.home.model;

import java.io.Serializable;
import javax.persistence.*;
import java.util.List;


/**
 * The persistent class for the categorietype database table.
 * 
 */
@Entity
@NamedQueries ({
				@NamedQuery(
							name = "getCategoryTypeByUser",
							query = "select o from Categorietype o where o.user = :user or o.user is null"
						),
				@NamedQuery(
							name = "getCategoryTypeByName",
							query = "select catType from Categorietype catType where catType.name = :name"
						),
})
public class Categorietype implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private String id;

	private String name;

	//bi-directional many-to-one association to Balance
	@OneToMany(mappedBy="categorietype")
	private List<Balance> balances;

	//bi-directional many-to-one association to User
	@ManyToOne
	@JoinColumn(name="UserID")
	private User user;

}
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299242
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты прикольный конечно, отдаешь в jsp массив объектов и ожидаешь что EL магическим образом догадается найти в этом массиве твой sum. Как считаешь сработает такая конструкция -

Код: java
1.
2.
Object[] o = (Object[]) i.next();
o.getSum();


?
Вот и я думаю что не сработает, таким образом в jsp ты должен пихать List<ConcreteObject>, который имеет метод getSum(), или List<HashMap<String, Object>>, в хэшмапе должно быть что-то вроде sum:BigDecimal(20.0);

Чтобы вернуть из native query не массив объектов, а кастомный объект надо смотреть в сторону ResultTransformer. Если желания заводить отдельный класс нет, надо перегнать массив объектов в мапу.
...
Рейтинг: 0 / 0
Вывод информации на jsp страницу из 2 таблиц
    #38299245
UserQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,

Попробую ваш вариант реализовать.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вывод информации на jsp страницу из 2 таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]