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

建设网站企业邮箱网站建设服务关于门户网站建设经费的报告

建设网站企业邮箱网站建设服务,关于门户网站建设经费的报告,网站开发需要的技术人员有什么,wordpress 去掉版权在实际工作中,我们会经常遇到联合主键的情况,所以我用简单例子列举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.yayakq.cn/news/602534/

相关文章:

  • 网站条形码如何做广东企业网站建设
  • 汇鑫网站建设方便众搜科技做百度网站
  • 怎样修改公司网站内容响应式网站模板html5
  • 视频类网站开发经验湖州网站seo
  • 做胃镜多少钱天津津门网站I楚雄 网站建设
  • 新乡+网站建设网站一年得多少钱
  • 网站设计就业岗位分析南昌地宝网
  • 如何免费建网站网页设计与网站建设过程
  • 阆中市网站建设服务学生制作个人网站
  • 河源盛世网站建设深圳沙井做网站
  • 使用网站效果图wordpress表格折叠插件
  • 手机网站适配加查网站建设
  • 网站后台数据库丢失网站建设如何切图
  • 视频教程保定seo公司
  • 平面网站设计免费行情软件app网站红色
  • 视频网站后台功能软件开发定制外包服务商
  • 电子商务网站建设与设计论文廊坊百度推广seo
  • 国内出名的设计网站有哪些深圳市住房和建设局门户网站
  • 陶瓷网站制作企业网站建设协议
  • 360网站卫士代备案流程网站通cms
  • 传统网站怎么换成WordPress亚马逊注册没有公司网站怎么做
  • 一汽大众网站谁做的php做网站难吗
  • 做网站用采集小白网站搭建教程
  • 网站制作书籍深圳企业有哪些
  • 有没有免费的企业网站建设网站开发工具 下载
  • wap企业网站网站开发者模式下怎么保存图片
  • 成都鱼羊环保网站制作设计东莞网络推广产品的公司吗
  • 重庆双八自助建设网站开发商不退定金找哪个部门
  • 眉山北京网站建设模板建房多少钱一平方
  • 5站合一 网站建设手机研发流程