如何,现在我的表里使用订单ID和产品ID作为唯一索引,那么需要在定义表实体类时在@Table中指定UniqueConstraint:
importlombok.AllArgsConstructor;importlombok.Getter;importlombok.NoArgsConstructor;importlombok.Setter;import javax.persistence.*;/*** 产品表
*
*@authorwulinfeng
*@since2019/12/13*/@Entity
@Table(name= "t_product", uniqueConstraints = @UniqueConstraint(columnNames = {"orderId", "productId"}))
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructorpublic classProductItem {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)privateLong id;//订单Id
@Column(nullable = false, length = 32)privateString orderId;//受理产品编码
@Column(length = 32)privateString productId;//产品名称
@Column(length = 32)privateString productName;//时间戳
@Column(length = 13)privateLong 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)