Sql JPA查询并不是返回所有值

Sql JPA查询并不是返回所有值,sql,entity-framework,jpa,Sql,Entity Framework,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 bicyc

我有一个包含以下值的表: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
问题是,当我运行query时,它不会像您看到的那样打印数据库中的所有值

然而,当我跑步时:

@NamedQuery(name="returnItems",
        query="SELECT c FROM Items c WHERE c.product = 'Maxima'")
它给了我一个“Maxima”值,它不在前面的列表中


有人有什么问题吗

您正在调用的列
id
不是真实的id-它不是主键(对于所有行都是唯一的)。由于JPA提供程序正在缓存id的实体,因此它会为具有相同id的所有行返回相同的实体


必须使用具有唯一主键列的表模型,并使用
@Id
注释将该列映射到属性。或者,如果您想要一个主键,该主键由例如
id
product
组成,您将不得不使用
@EmbeddedId
@IdClass

请澄清错误值的含义如果您只添加结果的第一行,而不是模型类的实现,则更容易帮助您(至少下次)。我相信在这种情况下,否决票将会消失。我已经给了你一个答案——只是猜测一下你的模型类。如您所见,如果您显示了
@Id
属性,则会有所帮助。对于JPA问题,您可以忘记简单的setter/getter,但是查看用于模型类的所有JPA注释(甚至是属性上的注释)总是很重要的。不,你没有写什么错,你只是展示了你的结果,我们不得不猜测什么错了。你应该读一本JPA教程或一本书。这是一个友好的建议,真的。如果您不熟悉正在使用的工具的基本知识,没有人可以帮助您。你问题的结构可能被认为有点侮辱性。首先,你是在强迫我们找出差异。所有行都存在,但缺少列;你为什么懒得写?第二,您说过“查询不会打印所有值…”执行查询时,它们不会打印任何内容。事实上,我确信当您查看打印此内容的代码时(您没有显示),您会自己找到这个问题的答案。@Id映射到private Integer productId的注释解决了我的问题。谢谢。:)