使用JPA标准无关联地连接表

Ida*_*dan 6 java hibernate jpa

我有两个没有建模关系的表:

comm的列:

name
date
code
Run Code Online (Sandbox Code Playgroud)

persondesc的列:

code
description
Run Code Online (Sandbox Code Playgroud)

这两个表之间的关系是多对一(许多通讯一个persondesc):

com.code = persondesc.code

这两个表使用注释进行映射,但我没有声明关系.

我想要的是选择comm排序的表persondesc.description.

我该怎么做JPA和Hibernate?

Nei*_*ton 16

因此,如果您的类没有"关系",那么您可以执行类似的查询

SELECT a FROM A a, B b WHERE a.someField = b.otherField ORDER BY b.anotherField
Run Code Online (Sandbox Code Playgroud)

可使用JPA标准,可以实现类似

CriteriaBuilder cb = emf.getCriteriaBuilder();
CriteriaQuery<A> crit = cb.createQuery(A.class);
Root<A> aRoot = crit.from(A.class);
Root<B> bRoot = crit.from(B.class);
aRoot.alias("a");
bRoot.alias("b");
crit.select(aRoot);
Predicate fieldEquals = cb.equal(aRoot.get(A_.someField), bRoot.get(B_.otherField);
crit.where(fieldEquals);
crit.orderBy(cb.asc(bRoot.get(B_.anotherField)));
Run Code Online (Sandbox Code Playgroud)

...或者只是重新设计你的课程并帮助你的开发人员.

  • 那些`.alias()是不是很重要? (3认同)
  • “ A_”和“ B_”来自何处。尝试此操作时,出现“无法解析符号“ A_”” (2认同)