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
    特别注明外均为原创,转载请注明。

    分享到微信

    扫描二维码

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

    相关文章

    发表评论:

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

    «    2024年10月    »
    123456
    78910111213
    14151617181920
    21222324252627
    28293031

    搜索

    控制面板

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

    最新留言

    文章归档

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