Запрос JPA возвращает не все значения

У меня есть таблица, которая имеет следующие значения: id, product, productid, brand, description, sum, quantity.

7, December, 74909, Fuji, Good bicycle, 2000, 4 7, March, 74534, Giant, Good goof bicycle, 2000, 4 8, Winter, 83458, Ghost, Very Good bicycle, 5000, 2 8, Spring, 42144, Regis, Good bicycle, 92000, 7 8, Summer, 47122, Maxima, Good veryyy bicycle, 92000, 7 9, Okutava, 53681, Sunny, Good bicycle, 9000, 5 10, Pavilion, 94847, Eclipse, Good bicycle, 92000, 7 10, Cicso, 47465, Omega, Good bicycle, 92000, 7 11, Lenovo, 16611, Hemi Cuda, Good bicycle, 92000, 7 11, Coral, 14342, Mustang, Bad bicycle, 92000, 7 12, Duple, 22222, Pulsar, Normal bicycle, 92000, 7 12, Shimano, 52515, Skyline, Good bicycle, 92000, 7 13, Salaror, 14542, Silvia, Good bicycle, 92000, 7 14, Phone, 21876, Miata, Good bicycle, 92000, 7 14, Imago, 12111, Titan, Good bicycle, 92000, 7 15, Kubas, 43777, Celica, Good bicycle, 92000, 7 16, Iki, 65427, Civic, Good bicycle, 92000, 7 16, Maxima, 13999, Accord, Good bicycle, 92000, 7 

Я использую запрос JPA, чтобы вернуть его.

 @Entity @Table(name="ITEMS") @NamedQuery(name="returnItems", query="SELECT c FROM Items c WHERE c.id > 0") public class Items implements Serializable { private static final long serialVersionUID = 1L; @Id private Integer id; private String product; private Integer productId; private String brand; private String description; private Integer sum; private Integer quantity; 

Но когда я запускаю его, я получаю неправильные значения:

 7 December 74909 2000 7 December 74909 2000 8 Winter 83458 5000 8 Winter 83458 5000 8 Winter 83458 5000 9 Okutava 53681 9000 10 Pavilion 94847 92000 10 Pavilion 94847 92000 11 Lenovo 16611 92000 11 Lenovo 16611 92000 12 Duple 22222 92000 12 Duple 22222 92000 13 Salaror 14542 92000 14 Phone 21876 92000 14 Phone 21876 92000 15 Kubas 43777 92000 16 Iki 65427 92000 16 Iki 65427 92000 

Проблема в том, что когда я запускаю запрос, он не выводит все значения из базы данных, как вы можете видеть.

Однако когда я запускаю:

 @NamedQuery(name="returnItems", query="SELECT c FROM Items c WHERE c.product = 'Maxima'") 

Это дает мне значение «Максимум», которого нет в предыдущем списке.

У кого-то есть проблемы?

Столбец, который вы вызываете id , не является реальным идентификатором – это не первичный ключ (который уникален для всех строк). И поскольку поставщик JPA кэширует объекты для идентификатора, он возвращает один и тот же объект для всех строк с одним и тем же идентификатором.

Вы должны использовать модель таблицы, где у вас есть уникальный столбец первичного ключа и сопоставить этот столбец с атрибутом с аннотацией @Id . Или, если вы хотите иметь первичный ключ, который представляет собой состав, например, id и product , вам придется использовать либо @EmbeddedId либо @IdClass .