public class A{
id ,//pk
name,
age
//getters and setters
}
另一个宽大处理--B:
public class B{
id, //pk
a_id, //pk id of A
degree,
institute
//getters and setters
}
这里要注意,实体A和B之间没有隐式关系,B表中的a_id是手工处理的,因此--关系类似于一对多(A-->B),但不是jpa-hibernate关系。而且,我的FullDto有A的所有属性和B的列表:
public class FullDto{
id ,//pk
name,
age,
List<B> bList;
public class FullDto(id, age, name, bList)
{
this.id.id;
this.age=age;
this.name=name;
this.bList=bList;
}
//getters and setters
}
现在,我想从A的存储库接口中提取所有内容(A和B表一次完成),如下所示:
public interface ARepository extends JpaRepository<A, Long> {
@Query("select " +
"new packageName.FullDto(a.id, a.name, a.age, b) " +
"from" +
" A a " +
" left join B b "+
" on a.id=b.a_id "+
"where " +
" a.id=:id ")
FullDto getFullDetails(@Param("id") Long id);
}
这是不可能的,因为构造函数语法只允许传递单个属性,即在这一级别上没有聚合记录,所以您必须创建某种中间件
,并通过一些自定义代码将其聚合成fulldto
,如Vlad Mihalcea在这里的解释:https://vladmihalcea.com/one-to-many-dto-projection-hibernate/
我认为对于Blaze-Persistence实体视图来说,这是一个完美的用例,因为它采用了更有效的方法,更易于使用和维护。
我创建了这个库,以便在JPA模型和自定义接口或抽象类定义的模型之间进行简单的映射,就像Spring Data Projects on Steroids一样。其思想是以您喜欢的方式定义目标结构(域模型),并通过JPQL表达式将属性(getter)映射到实体模型。
使用Blaze-Persistence实体视图,用例的DTO模型可以如下所示:
@EntityView(A.class)
public interface FullDto {
@IdMapping
Long getId();
String getName();
Long getAge();
@Mapping("B[aId = VIEW(id)]")
Set<BDto> getBList();
@EntityView(B.class)
interface BDto {
@IdMapping
Long getId();
String getName();
}
}
查询是将实体视图应用于查询的问题,最简单的只是按ID查询。
Page<FullDto> findAll(Pageable pageable);
问题内容: 需要使用意大利语翻译查找所有单词,如果不存在意大利语,则需要使用西班牙语(默认语言)。 我不能使用多个查询,并且存在条件(技术限制) 字 笔译 结果: 这段代码返回了我需要的全部信息,但是我无法在我所处的情况下使用存在条件的地方 问题答案: 我会在桌子上加入桌子两次,每种语言一次:
带hibernate的JSF应用程序 有没有一种方法可以使用联接来过滤条件列表返回的结果<我有两张桌子。订单和顾客。 我需要返回丢失电子邮件地址的客户的所有订单,以及所有order.billingCustomeId=null和CustomeId=nullorder.shipping订单。 客户可以在或上进行匹配。 我将使用的SQL Hibernate标准 这将返回billing/shipping
当我添加一个左连接来获取外部表的计数时,它将我其他左连接表的总和值与计数相乘,我也不能在这里使用不同的总和,因为两个值可以是相同的:
我是新加入Hibernate的,所以请原谅我的陈词滥调,但我找不到任何与我的问题相关的答案(我试图搜索文档) 如果可能的话,我将从两个表(和)创建一个左外部联接,而不使用HQL;在我的例子中,我只想使用Criteria API。 我不知道哪些字段将用于连接,用户可以决定。 我看到Criteria API有一些不错的函数,比如或,但是如果我使用这些方法,我就无法运行连接。 每个表都有一个类(映射为特
主要内容:Oracle LEFT JOIN子句简介,Oracle LEFT JOIN示例在本教程中,您将学习如何使用Oracle 子句来查询多个表中的数据。 Oracle LEFT JOIN子句简介 以下语句说明连接两个表和时的子句的语法: 在这个查询中,是左表,是右表。查询将表中的每一行与表中的行进行比较。如果和表中的一对行满足连接谓词,查询将组合两个表中行的列值,并将结果行记录包含在结果集中。 如果表中的行在表中没有找到匹配的行,则查询将会将SELECT子句中出现在表的每个列的值
LEFT OUTER JOIN 左外连接 [ ] 需求:查询所有分类,如果该分类下没有商品,则不显示该分类 [ ] 实现: SELECT `goods`.`id`, `goods`.`title`, `goods`.`price`, `goods`.`cate_id`, `cate`.`id`, `cate`, `cate.title` F