|
|
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
всем привет Код: plsql 1. стек: Код: java 1. пытаюсь умножить цену одного товара на их кол-во, а потом просуммировать: sum(z.costOneProduct*z.countProduct) вот здесь и вылетает ошибка, как правильно сделать подскажите пожалуйста. спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 16:47:23 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Код: java 1. Что-то не то с передачей параметров запросу. Думаю, если посмотришь генерируемый запрос, то сам поймешь. Он наверняка он не генерируется, поэтому надо показывать не чистый SQL/HQL, а код Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 17:13:48 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
JulTстек: [src java] java.lang.IllegalArgumentException: An exception occured while creating a query in EntityManager Это не стек. Это текст самого вехнего исключения. Давай весь stacktrace без купюр. JPA точно понимает параметры вида ?1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 17:22:01 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
С передачей все правильно, пробовалА сделать без умножения в sum, все получается: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В консоль выводит: Взято товара: Кабель Atlas Hyper v1.4 HDMI 1.4 1,5 м на общую сумму: 109.0 а вот такой запрос (с умножением) уже не работает: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 17:24:19 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Можно попробовать сделать новое свойство, в нем задать формулу. А JPQL уже по этому свойству. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 17:26:13 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
BlazkowiczМожно попробовать сделать новое свойство, в нем задать формулу. А JPQL уже по этому свойству. как? вот полный стек: Caused by: Exception [TOPLINK-8024] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.EJBQLException Exception Description: Syntax error parsing the query [""SELECT sum(z.costOneProduct*z.countProduct) FROM Orders z WHERE z.idProduct=?1 and z.idProduct.isClose=?2""], line 1, column 26: syntax error at [*]. Internal Exception: line 1:26: expecting RIGHT_ROUND_BRACKET, found '*' at oracle.toplink.essentials.exceptions.EJBQLException.syntaxErrorAt(EJBQLException.java:379) at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.handleANTLRException(EJBQLParser.java:335) at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.addError(EJBQLParser.java:278) at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.reportError(EJBQLParser.java:378) at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.aggregateExpression(EJBQLParser.java:1416) at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.selectExpression(EJBQLParser.java:1158) at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.selectClause(EJBQLParser.java:403) at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.selectStatement(EJBQLParser.java:178) at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.document(EJBQLParser.java:135) at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.parse(EJBQLParser.java:166) at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.buildParseTree(EJBQLParser.java:127) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:215) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:189) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:153) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.<init>(EJBQueryImpl.java:114) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.<init>(EJBQueryImpl.java:99) at oracle.toplink.essentials.internal.ejb.cmp3.EJBQueryImpl.<init>(EJBQueryImpl.java:86) at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.createQuery(EntityManagerImpl.java:204) ... 23 more Caused by: line 1:26: expecting RIGHT_ROUND_BRACKET, found '*' at persistence.antlr.Parser.match(Parser.java:212) at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.aggregateExpression(EJBQLParser.java:1370) ... 36 more ПОСТРОЕНИЕ УСПЕШНО ЗАВЕРШЕНО (общее время: 27 секунд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 17:29:50 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
ой, сорри, забыла выделить текст ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 17:30:19 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Скорее всего JPQL так не умеет http://www.oracle.com/technetwork/articles/vasiliev-jpql-087123.html Проще всего нативный запрос использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 17:32:50 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Используйте hql или native SQL. jpql не поддерживает выражений в агрегатных функциях, в соответствии с документацией там может быть либо выражение, указывающее на конкретное поле, либо * для count(*). Hibernate - сессию можно получить следующим образом: Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 18:16:20 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСкорее всего JPQL так не умеет http://www.oracle.com/technetwork/articles/vasiliev-jpql-087123.html Проще всего нативный запрос использовать. Немного длиннее получился запрос, но все работает как надо. Код: java 1. 2. 3. Спасибо IDVsbruck, и отдельное спасибо мега-человеку Blazkowicz )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 18:31:25 |
|
||
|
JPA / Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
ivanraИспользуйте hql или native SQL. jpql не поддерживает выражений в агрегатных функциях, в соответствии с документацией там может быть либо выражение, указывающее на конкретное поле, либо * для count(*). Hibernate - сессию можно получить следующим образом: Код: java 1. 2. 3. 4. спасибо, учту ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 18:33:40 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38287169&tid=2129218]: |
0ms |
get settings: |
8ms |
get forum list: |
28ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
37ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
90ms |
get tp. blocked users: |
2ms |
| others: | 278ms |
| total: | 475ms |

| 0 / 0 |
