当前位置: 首页 > 知识库问答 >
问题:

Spring Data JPA规范Manyto One Realization

东方英豪
2023-03-14

我对Spring Data JPA是新手,有两个实体,很少使用stackoverflow的例子,但运气不好。

用户-->*纳税

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

纳税人。JVA

公共类纳税实现可序列化{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@NotNull
@Column(name = "payment_date", nullable = false)
private LocalDate paymentDate;

@NotNull
@Column(name = "amount", precision=10, scale=2, nullable = false)
private BigDecimal amount;

@Column(name = "reference")
private String reference;

@ManyToOne
private User user;

public Long getId() {
    return id;
}..

}

private TaxPaymentSpecification(){

}

static Specification<TaxPayment> hasUser(Long userId){
    return new Specification<TaxPayment>() {

        @Override
        public Predicate toPredicate(Root<TaxPayment> arg0, CriteriaQuery<?> arg1,
                CriteriaBuilder arg2) {
            // TODO Auto-generated method stub
            Root<TaxPayment> root = arg0;
            Subquery<Long> subqry =  arg1.subquery(Long.class);
            Root<User> user =  subqry.from(User.class);

            final Join<User,TaxPayment> taxpays = root.join("user");

            subqry.select(taxpays.<Long> get("user_id"));

            subqry.where(arg2.equal(user.<Long> get("id"),userId));
            return arg2.in(arg0.get("user_id")).value(subqry);

       }
    };

}

共有1个答案

侯向文
2023-03-14

如果您已经知道userId,则不需要使用subquery,该userId将是TaxPayment表中user_id的值:

@Override
public Predicate toPredicate(Root<TaxPayment> arg0, CriteriaQuery<?> arg1, 
        CriteriaBuilder arg2) {
  return arg2.equal(arg0.get("user_id"), userId);
}
 类似资料:
  • Number,String,Boolean和Object 不要使用如下类型Number,String,Boolean或Object。 这些类型指的是非原始的装盒对象,它们几乎没在JavaScript代码里正确地使用过。 /* 错误 */ function reverse(s: String): String; 应该使用类型number,string,and boolean。 /* OK */ fu

  • 参数规范 参数前带* 表示必填 参数命名采用小写加下划线形式 请求每个接口时,在 header里带上 XX-Token(用户 token),XX-Device-Type(类型:mobile,android,iphone,ipad,web,pc,mac,wxapp),XX-Api-Version(比如1.0.0),XX-Wxapp-AppId(小程序 AppId) 返回结果 参数命名采用小写加下划线

  • 公司及产品名称 我们的公司及产品名称是「DaoCloud」。注意这是两个单词的合成词,所以中间沒有空格(参考:GitHub)。如作为 URL 的一部分,应该使用全小写的「daocloud」。 文案风格 一定多检查,确保没有错别字。 即使是流行语中的谐音错别字也不要使用,比如「墙裂」、「童鞋」等。 我们崇尚精练的文风。请在检查中把对表达意思没有明显作用的字、词、句删除,在不影响表达效果的前提下把文案

  • AMD(异步模块定义)是为浏览器环境设计的,因为 CommonJS 模块系统是同步加载的,当前浏览器环境还没有准备好同步加载模块的条件。 AMD 定义了一套 JavaScript 模块依赖异步加载标准,来解决同步加载的问题。 模块通过 define 函数定义在闭包中,格式如下: define(id?: String, dependencies?: String[], factory: Functi

  • CommonJS 是以在浏览器环境之外构建 JavaScript 生态系统为目标而产生的项目,比如在服务器和桌面环境中。 这个项目最开始是由 Mozilla 的工程师 Kevin Dangoor 在2009年1月创建的,当时的名字是 ServerJS。 我在这里描述的并不是一个技术问题,而是一件重大的事情,让大家走到一起来做决定,迈出第一步,来建立一个更大更酷的东西。 —— Kevin Dango

  • 本文向大家介绍PE8规范相关面试题,主要包含被问及PE8规范时的应答技巧和注意事项,需要的朋友参考一下     各种右括号前不要加空格。 逗号、冒号、分号前不要加空格。 函数的左括号前不要加空格。如Func(1) 序列的左括号前不要加空格。如list[2] 操作符左右各加一个空格,不要为了对齐增加空格 函数默认参数使用的赋值符左右省略空格 不要将多句语句写在同一行,尽管使用‘;’允许 if/for

  • XXX 已弃用: 移动到这里 消息类型 ABCI 请求/响应在这个模式文件中定义为简单的 Protobuf 消息。 TendermintCore 发送请求,ABCI 应用程序发送响应。在这里,我们提供了一个概述的消息类型和他们是如何使用的 Tendermint。然后我们将每个请求-响应对描述为一个带有参数和返回值的函数,并添加一些用法说明。 有些消息(Echo, Info, InitChain,

  • 代码风格 代码格式化 # 样式书写一般有两种:一种是紧凑格式 (Compact) .jdc{ display: block;width: 50px;} # 一种是展开格式(Expanded) .jdc{ display: block; width: 50px; } 团队约定 统一使用展开格式书写样式 代码大小写 统一使用小写 推荐 .dwz{ display:block; } 不推荐 .DWZ