jpa - 使用 JPA 可以仅返回一列

标签 jpa many-to-many entity-bean

我有一个 Open JPA 实体,它成功连接了多对多关系。现在我成功地获取了整个表,但我实际上只想要该表中的 ID。我计划稍后调用数据库来重建我需要的实体(根据我的程序流程)。 我只需要 ID(或该表中的一列)。
1)我应该尝试在我的实体bean中或在我将用来调用实体bean的无状态 session bean中限制这一点 2)如果我尝试使用 JPA 执行此操作,我如何指定只从表中获取 ID,而不是整个表?到目前为止,在网上查找,我还没有找到可以做到这一点的方法。所以我猜想没有办法做到这一点。 3)如果我只是简单地操作返回值,我是否应该创建一个单独的类,将其返回给用户,仅将所需的 id 列表返回给用户?

我在这里可能完全错误,但从表面上看,我认为没有一种简单的方法可以使用 JPA 来执行此操作,并且我必须向用户返回一个自定义对象而不是实体 bean (这个自定义对象只会保存 id,而不是像当前那样保存整个表)

任何想法...我认为这并不真正相关,但人们总是要求代码,所以给你...

@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="QUICK_LAUNCH_DISTLIST",
        joinColumns=@JoinColumn(name="QUICK_LAUNCH_ID"),
        inverseJoinColumns=@JoinColumn(name="LIST_ID"))
private List<DistributionList> distributionlistList;

目前我如何获取整个记录集合。请记住,我只想要 ID...

    try
    {
        //int daSize = 0;
        //System.out.println("Testing 1.2..3...! ");
        qlList = emf.createNamedQuery("getQuickLaunch").getResultList();            
    }

这就是我调用实体 bean 的方式。我想这是我必须以编程方式遍历并创建一个类似于实体 bean 的自定义对象的地方(但它只有 ID 而不是整个表,并尝试将 id 放在某个地方。

你有什么想法?

谢谢

最佳答案

我相信我刚刚找到了解决这个问题的最佳方案。
这个链接就是答案: my other stack overflow answer post

但是为了那些懒得点击链接的人,我基本上使用了 @ElementCollection 属性......

@ElementCollection(fetch=FetchType.EAGER)
        @CollectionTable(name="QUICK_LAUNCH_DISTLIST",joinColumns=@JoinColumn(name="QUICK_LAUNCH_ID"))
        @Column(name="LIST_ID")
private List<Long> distListIDs;

就这样完成了。

关于jpa - 使用 JPA 可以仅返回一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435151/

相关文章:

hibernate - JPA 与 H2 数据库的连接

php - 同时在laravel中插入记录多对多关系

java - Hibernate:带有订单列的多对多映射

java - Spring中具有相同名称的多个字段

java - EJB:看来我不明白关键点

mysql - Spring boot - Hibernate JPA 不创建 MySql DB 表

java - 使用jpa hibernate高并发会无法获取JDBC Connection

java - 以编程方式为 hibernate 提供数据源

java - @Size 注释不修剪空格

mysql - 如何查询多对多连接并过滤相同的关系?