当前位置: 首页 > news >正文

北京公司注册虚拟地址seo 培训教程

北京公司注册虚拟地址,seo 培训教程,免费做电脑网站,爱网图在实际工作中,我们会经常遇到联合主键的情况,所以我用简单例子列举JPA两种实现联合主键的方式。 1、如何通过IdClass 实现联合主键 第一步:新建一个UserInfoID类,里面是联合主键 Data Builder NoArgsConstructor AllArgsConstructor publi…

在实际工作中,我们会经常遇到联合主键的情况,所以我用简单例子列举JPA两种实现联合主键的方式。

1、如何通过@IdClass 实现联合主键

第一步:新建一个UserInfoID类,里面是联合主键

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserInfoID implements Serializable {private String name, telephone;
}
​

第二步:新建一个UserInfo实体,采用@IdClass引用联合主键

@Entity
@Data
@Builder
@IdClass(UserInfoID.class)
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo {private Integer ages;
​@Idprivate String name;@Idprivate String telephone;
}
​

第三步:新建一个UserInfoRepsitory类完成CRUD

@Repository
public interface UserInfoRepository  extends JpaRepository< UserInfo,UserInfoID> {
}
​

第四步:写一个测试

@SpringBootTest
class SpringDataJpaTestApplicationTests {
​
​@Resourceprivate UserInfoRepository userInfoRepository;
​@Testpublic void testIdClass() {userInfoRepository.save(UserInfo.builder().ages(29).name("sunfeng").telephone("18854885488").build());
​Optional<UserInfo> userInfoOptional = userInfoRepository.findById(UserInfoID.builder().name("sunfeng").telephone("18854885488").build());
​userInfoOptional.ifPresent(System.out::println);}
​
}
​

通过上面的例子可以发现表的主键是primary key(name, telephone),而Entity里面不是一个@Id字段了

2、@Embeddable与@EmbedDedId注解使用

第一步:我们在上面的例子中的UserInfoID里面添加@Embeddable注解

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Embeddable
public class UserInfoID implements Serializable {private String name, telephone;
}
​

第二步:修改一下我们刚才的UserInfo对象,删除@IdClass添加 @EmbeddedId注解

@Entity
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo {private Integer ages;
​@EmbeddedIdprivate UserInfoID userInfoID;}
​

第三部:其他不变我们修改一下测试用例

​
@SpringBootTest
class SpringDataJpaTestApplicationTests {
​
​@Resourceprivate UserInfoRepository userInfoRepository;
​@Testpublic void testIdClass() {userInfoRepository.save(UserInfo.builder().ages(29).userInfoID(UserInfoID.builder().name("sunfeng").telephone("18854885488").build()).build());
​Optional<UserInfo> userInfoOptional = userInfoRepository.findById(UserInfoID.builder().name("sunfeng").telephone("18854885488").build());
​userInfoOptional.ifPresent(System.out::println);}

运行完之后,可以得到相同的结果。那么两种方式之间的区别是什么?

  1. 在使用的时候 @EmbeddedId使用的是对象,而IdClass用的是具体的字段

  2. 二者的JPQL也会不一样

    1. @IdClass的JPQL写法是:SELECT u.name FROM UserIndo u

    2. @EmbeddedId的JPQL写法是:select u.userInfo.name FROM UserInfo u

http://www.ds6.com.cn/news/94403.html

相关文章:

  • 自己做的网站响应速度慢站长工具查询网站信息
  • 博物建设公司网站兰州seo快速优化报价
  • 网站建设 正邦如何自己建立一个网站
  • 净水器公司网站源码如何建网站要什么条件
  • 网站制作与网页设计营销型网站定制
  • 网站功能模块是什么谷歌浏览器下载安装2022
  • 做网站外包的公司好干嘛快速网站推广
  • 安康做网站的公司电话百度网盘客户端
  • 制作网页软件有哪些杭州优化商务服务公司
  • 网站开发href使用本地链接看到招聘游戏推广员千万别去
  • 广西 网站建设seo还有未来吗
  • 买cms做网站口碑营销属于什么营销
  • 公司建设网站费用怎么记账广州线上教学
  • 批发商城网站开发今日热搜
  • 小程序就是做网站c++培训班学费一般多少
  • 会员网站建设做关键词推广
  • 宁波科技网站建设惠州seo建站
  • 推荐聊城做网站的公司广州seo黑帽培训
  • 响应式网站做seo怎么样seo建站教程
  • 做教育网站mac923水蜜桃923色号
  • 盐城做网站企业网络营销推广平台
  • 中国工程建设招聘信息网站百度商城
  • 广西卫健委发布疫情最新消息青岛seo优化
  • 建站 赚钱seo教程论坛
  • 宁波网站建设公司排名seo综合查询站长工具
  • 泰安集团网站建设地点企业管理培训公司排行榜
  • 口碑好的盐城网站建设谷歌广告投放
  • 单位网站建设的优势网站优化人员通常会将目标关键词放在网站首页中的
  • wordpress网站恢复百度app优化
  • 广州注册公司地址要求seo搜索引擎是什么