SpringDataJpa创建联合索引的实现

网友投稿 1040 2022-11-16

SpringDataJpa创建联合索引的实现

SpringDataJpa创建联合索引的实现

目录SpringDataJpa创建联合索引创建联合索引对应类创建映射实体类添加新数据SpringDataJpa指定联合索引在@Table中指定UniqueConstraint自动加上唯一索引了

SpringDataJpa创建联合索引

创建联合索引对应类

/**

* 时间:2019/12/30 14:58

* 功能:戴镜视力复查联合主键

*/

@Data

@Embeddable

public class VisualReexaminationUnionKey implements Serializable {

TYCLaBLc@Column(name = "id")

private String id;

@Column(name = "c_review_date")

private java.sql.Timestamp cReviewDate;

}

创建映射实体类

@Table(name = "qy_visual_reexamination")

@Entity

@Data

public class QyVisualReexamination {

/*@Id

@Column(nullable = true, name = "id")

private String id;

@Id

@Column(nullable = true, name = "c_review_date")

private java.sql.Timestamp cReviewDate;*/

// 复合主键

@EmbeddedId

private VisualReexaminationUnionKey id;

@Column(nullable = true, name = "c_clientid")

private String cClientid;

@Column(nullable = true, name = "c_ygscode")

private String cYgscode;

@Column(nullable = true, name = "c_primary_vision_r")

private String cPrimaryVisionR;

@Column(nullable = true, name = "c_primary_vision_l")

private String cPrimaryVisionL;

@Column(nullable = true, name = "c_ball_r")

private String cBallR;

@Column(nullable = true, name = "c_ball_l")

private String cBallL;

@Column(nullable = true, name = "c_pole_r")

private String cPoleR;

@Column(nullable = true, name = "c_pole_l")

private String cPoleL;

@Column(nullable = true, name = "c_axes_r")

private String cAxesR;

@Column(nullable = true, name = "c_axes_l")

private String cAxesL;

@Column(nullable = true, name = "c_add_r")

private String cAddR;

@Column(nullable = true, name = "c_add_l")

private String cAddL;

@Column(nullable = true, name = "c_check_r")

private String cCheckR;

@Column(nullable = true, name = "c_check_l")

private String cCheckL;

@Column(nullable = true, name = "c_proposal")

private String cProposal;

@Column(nullable = true, name = "c_com")

private String cCom;

}

添加新数据

@Override

public Object addVisualReexamination(String id, String clientId, String reviewDate, String ygsCode, String primaryVisionR,

String primaryVisionL, String ballR, String ballL, String poleR, String poleL, String axesR,

String axesL, String addR, String addL, String checkR, String checkL, String proposal, String comId) {

QyVisualReexamination bean = new QyVisualReexamination();

// 生成联合索引

VisualReexaminationUnionKey unionId = new VisualReexaminationUnionKey();

unionId.setCReviewDate(Timestamp.valueOf(reviewDate));

unionId.setId(id);

bean.setId(unionId);

bean.setCClientid(clientId);

bean.setCYgscode(ygsCode);

bean.setCPrimaryVisionR(primaryVisionR);

bean.setCPrimaryVisionL(primaryVisionL);

bean.setCBallR(ballR);

bean.setCBallL(ballL);

bean.setCPoleR(poleR);

bean.setCPoleL(poleL);

bean.setCAxesR(axesR);

bean.setCAxesL(axesL);

bean.setCAddR(addR);

bean.setCAddL(addL);

bean.setCCom(comId);

bean.setCCheckR(checkR);

bean.setCCheckL(checkL);

bean.setCProposal(proposal);

QyVisualReexamination save = mQyVisualReexaminationDao.save(bean);

return save.getId();

}

SpringDataJpa指定联合索引

如何,现在我的表里使用订单ID和产品ID作为唯一索引,那么需要在定义表实体类时

在@Table中指定UniqueConstraint

import lombok.AllArgsConstructor;

import lombok.Getter;

import lombok.NoArgsConstructor;

import lombok.Setter;

import javax.persistence.*;

/**

* 产品表

*

* @author wulinfeng

* @since 2019/12/13

*/

@Entity

@Table(name = "t_product", uniqueConstraints = @UniqueConstraint(columnNames =http:// {"orderId", "productId"}))

@Getter

@Setter

@AllArgsConstructor

@NoArgsConstructor

public class ProductItem {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

// 订单Id

@Column(nullable = false, length = 32)

private String orderId;

// 受理产品编码

@Column(length = 32)

private String productId;

// 产品名称

@Column(length = 32)

private String productName;

// 时间戳

@Column(lengthhttp:// = 13)

private Long timestamp;

}

把原来的t_product表drop掉,重启spring boot,再看该表

自动加上唯一索引了

mysql> show index from t_product;

+-----------+------------+-----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |

+-----------+------------+-----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

| t_product | 0 | PRIMARY | 1 | id | A | 2 | NULL | NULL | | BTREE | | |

| t_product | 0 | UK1mvw2lcd07t4cuicl4awfbgkw | 1 | order_id | A | 2 | NULL | NULL | | BTREE | | |

| t_product | 0 | UK1mvw2lcd07t4cuicl4awfbgkw | 2 | product_id | A | 2 | NULL | NULL | YES | BTREE | | |

+-----------+------------+-----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

3 rows in set (0.00 sec)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:8- Cookie&Session&JSP -Session
下一篇:Docker容器——在Github上面的一本关于Docker的书籍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~