【发布时间】:2020-11-24 00:03:42
【问题描述】:
表名:转移
列:IDENTIFIER、KEY、TRANSFER_NUMBER、FIRST_NAME、LAST_NAME
Transfer的表复合主键为:IDENTIFIER,KEY,TRANSFER_NUMBER
Transfer的表索引INDEX1定义:IDENTIFIER ASC, KEY ASC, TRANSFER_NUMBER ASC
转移pojo
@Entity
@Table(name = "TRANSFER", indexes = { @Index(name = "INDEX1", columnList = "identifier,key,transferNbr") })
@Getter
@Setter
@DynamicUpdate
public class Transfer implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private TransferPk id;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
TransferPk pojo
@EqualsAndHashCode
@Getter
@Setter
@Embeddable
public class TransferPk implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "IDENTIFIER")
private String identifier;
@Column(name = "KEY")
private int key;
@Column(name = "TRANSFER_NUMBER")
private String transferNbr;
检索转移的代码
TransferPk id = new TransferPk();
id.setIdentifier("123");
id.setKey(456);
id.setTransferNbr("789");
// This JPA query also uses the reverse Transfer of index
Optional<Transfer> Transfer = TransferRepo.findById(id);
我能够毫无问题地从数据库获取数据,并且 HQL 是
select <all fileds> from TRANSFER transfer0_ where transfer0_.TRANSFER_NUMBER=? and transfer0_.KEY=? and transfer0_.IDENTIFIER=?
虽然我们使用了索引注释,但 JPA 仍然没有使用传输表 (INDEX1) 中定义的索引,因此检索需要更多时间。
如何强制 JPA 使用索引顺序。非常感谢任何帮助。谢谢
【问题讨论】: