【问题标题】:JPA query need some guideJPA 查询需要一些指南
【发布时间】:2017-09-17 06:45:08
【问题描述】:

我这里有 3 个实体 A、B 和 C。

public class A extends B{
int id;
String name;
}

///////////////////////////////////////

public class B implements Serializable{
int id;
String name;
}

///////////////////////////////////////

@Entity
@Table(name="C")
@NamedQueries({ 
@NamedQuery(name="C.findByA",
    query="SELECT e FROM C AS e WHERE e.A = :id")
})
public class C implements Serializable {

int id;

@OneToOne
A a;

B b;
}

实体 A 和实体 B 都与实体 C 有关系。 在我的例子中,我有一个来自实体 A 的当前 ID,我想使用来自实体 C 的查询来访问实体 B。

我尝试了很多方法,但都没有帮助。 我尝试将此作为我的存储库

public QueryResult<C> findByA(Long id);

然后使用

Repo.findByA(id);

也在我的 FacadeClass 中尝试过这个

C result=(C) em.createNamedQuery("findByA").setParameter("id",id).getSingleResult();
return result;

但它不起作用。 我尝试使用 Query() 和 TypedQuery() 直接进行查询 没有工作。

谁能帮我指路或给我一个想法。 应该没那么难,但我真的很困惑。

谢谢。

【问题讨论】:

    标签: java hibernate jpa named-query


    【解决方案1】:

    您可以使用 JpaRepository

    public interface CRepo extends JpaRepository<C, Long>{
    C findByA(A a);
    List<C> findByB(B b);
    }
    

    【讨论】:

    【解决方案2】:

    怎么样:

    query="SELECT e FROM C e WHERE e.a.id = :id"
    

    hql-query

    【讨论】:

    • 不,没有帮助。我也尝试过更改它并直接使用 JpaRepository,但仍然有同样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    相关资源
    最近更新 更多