JPA查询需要一些指南

时间:2017-04-20 14:45:02

标签: java hibernate jpa named-query

我在这里有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()进行查询 没人工作。

任何人都可以帮助我向我展示方式或给我一个想法。 它不应该那么难,但我有些困惑。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用 JpaRepository

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

答案 1 :(得分:0)

怎么样:

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

hql-query