SpringDataJpa 复合主键写法

方式一

复合主键类

SpringDataJpa 复合主键写法
@Embeddable
public class UserKey implements Serializable {    @Column(name = "NAME", nullable = false, length = 32)
    private String name;

    @Column(name = "AGE", nullable = true, length = 32)
    private String age;
    
    getter/setter...
}

实体类

@Entity
@Table(name = "USER")
@IdClass(UserKey.class)
public class User implements Serializable {

    /** 
     * serialVersionUID
     */
	private static final long serialVersionUID = -7768637914227571159L;

    /** 
     *  物料编码
     */
	@Id
	@Column(name = "NAME", nullable = true, length = 32)
    private String name;
    
    /** 
     *  技术规范书编码
     */
	@Id
	@Column(name = "AGE", nullable = true, length = 32)
    private String age;
    getter/setter
    }

查找方法

userRepository.findOne(userKey);

参考:https://www.cnblogs.com/boywwj/p/8031106.html

方式二

复合主键不能用 @Id,需要用 @EmbeddedId

主键类

@Embeddable
public class UserFundPrimarykey implements Serializable {
	
	private static final long serialVersionUID = 1L;
 
	// 用户 ID
	private Integer userId;
	
	private String date;
	
	getter/setter...
}

实体类

@Entity
@Table(name = "user_funds")
public class UserFund {
	
	/**
	*  主键
	*  复合主键不能用 @Id,需要用 @EmbeddedId。插入数据的时候必须手工赋值
	*/
	@EmbeddedId
	private UserFundPrimarykey userFundPK;
	
	// 本金
	@Column(precision=18, scale=5)
	private BigDecimal principal;
	
	// 利率(5% 传 0.05)
	@Column(precision=18, scale=5)
	private BigDecimal rate;
	
	/**
	*  当天收益(日利息 = 本金 * 利率 /365)
	*  保留 2 位小数
	*/
	@Column(precision=18, scale=2)
	private BigDecimal interest;
	
	getter/setter...
}

持久层

public interface UserFundRepository extends CrudRepository<UserFund, UserFundPrimarykey> {}

设值使用

UserFund uf2 = new UserFund();
// 必须手动设置主键
uf2.setUserFundPK(new UserFundPrimarykey(2, "2017-07-01"));
uf2.setRate(new BigDecimal("0.041"));
uf2.setPrincipal(new BigDecimal("20000"));
// 截断,只保留两位小数
uf2.setInterest(uf2.getRate().multiply(uf2.getPrincipal()).divide(new BigDecimal("365"), 2, RoundingMode.DOWN));
userFundRepository.save(uf2);

参考:https://blog.csdn.net/mn960mn/article/details/74034512

目录
  • 方式一
  • 方式二
  • 目录
  • 方式一
  • 方式二
  • 手机扫描二维码访问

      本文标题:《SpringDataJpa 复合主键写法》作者:极四维博客
      原文链接:https://cway.top/post/711.html
      特别注明外均为原创,转载请注明。

      分享到微信

      扫描二维码

      可在微信查看或分享至朋友圈。

      相关文章

      发表评论:

      ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

      «    2025年5月    »
      1234
      567891011
      12131415161718
      19202122232425
      262728293031

      搜索

      控制面板

      您好,欢迎到访网站!
        查看权限

      最新留言

      文章归档

      • 订阅本站的 RSS 2.0 新闻聚合