Spring Jpa 的三种复合主键查询(实体类操作,sql语句里操作)

    今天刚好有个sql查询,查出来的时候发现数据重复(可能说是覆盖了更为准确些)了,条数是对的,再去debug一遍,发现是jpa自定义的实体类那里出了问题,主键id只有一个,因为查出来的数据是复合主键的,所以只找到了实体类中定义的一个ID,可能就导致了数据覆盖,但条数是正确的,然后自己在sql里处理,写了一种方式来处理这个复合主键,然后上网看了一些资料之后原来还有其他方式来处理复合主键的,主要是在实体类里使用相关注解,还有新建一个类用来存放符合主键的字段,不过我懒,所以就没用网上的方式来处理了,直接用自己的方式在sql语句里处理,懒得又新建一个类,因为就只用一次,所以下面也大概总结讲一下三种复合主键查询的方法(前面两种是看网上说的常用方法):

 

1,使用注解@Embeddable+EmbeddedId+@AttributeOverrides组合(也叫嵌入式主键),这个方式主要是新建一个复合主键类,然后用@Embeddable来声明这个类是复合主键类,接着在自己定义的另外一个新类中可以继承这个复合类,也可以直接把这个类声明为其中一个属性,在Repository中把这个复合类作为主键返回就行了(继承的时候返回的主键);用@EmbeddedId来声明复合主键的一个id列,@AttributeOverrides是映射到复合类对应的列的注解

 

2,使用注解@IdClass(复合类.class)+@Id+@Column组合在自定义的实体

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值