lunedì 9 aprile 2012

JPA Query con clausola ORDER BY

C'è una differenza fondamentale nell'eseguire una query sql con clausola order by rispetto ad una query JPA.
Data la seguente tabella SQL:

CREATE TABLE `BIDS` (
  `bid_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `bidder_id` varchar(45) DEFAULT NULL,
  `item_id` int(10) unsigned DEFAULT NULL,
  `bid_price` double DEFAULT NULL,
  `bid_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`bid_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1


E' perfettamente lecito in sql scrivere la seguente query:


select b.bid_id from BIDS b  order by b.bid_price desc;

Quindi avere nell'order  by un campo non incluso nella clausola select.

In una query JPA ciò NON E' POSSIBILE in quanto i campi presenti nell'order by devono essere parte della proiezione in select.
Quindi, ipotizzando che la tabella sia mappata come oggetto con gli stessi nomi in sql
scrivere la stessa query precedentemente riportata genererà un errore.

Nessun commento:

Posta un commento