java强制走索引_java - 使用JPA指定索引(非唯一键)

本文介绍了如何在Java中使用JPA注解为字段定义非唯一索引,以提高查询效率。从JPA 2.1开始,可以使用`@Index`注解来指定索引,示例代码展示了如何为多个字段创建单独和复合索引。同时,文中还列举了不同ORM框架中定义索引的方法。
摘要由CSDN通过智能技术生成

java - 使用JPA指定索引(非唯一键)

如何定义字段,例如email具有使用JPA注释的索引。 我们在email上需要一个非唯一键,因为每天在这个字段上有数百万个查询,而且没有密钥它有点慢。

@Entity

@Table(name="person",

uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))

public class Person {

// Unique on code and uid

public String code;

public String uid;

public String username;

public String name;

public String email;

}

我已经看到了一个特定于hibernate的注释,但我正在尝试避免供应商特定的解决方案,因为我们仍然在决定hibernate和datanucleus之间。

更新:

从JPA 2.1开始,您可以这样做。 请参阅:此位置不允许使用注释@Index

11个解决方案

154 votes

使用JPA 2.1,您应该能够做到这一点。

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Index;

import javax.persistence.Table;

@Entity

@Table(name = "region",

indexes = {@Index(name = "my_index_name", columnList="iso_code", unique = true),

@Index(name = "my_index_name2", columnList="name", unique = false)})

public class Region{

@Column(name = "iso_code", nullable = false)

private String isoCode;

@Column(name = "name", nullable = false)

private String name;

}

更新:如果您需要使用两个或更多列创建和索引,则可以使用逗号。 例如:

@Entity

@Table(name = "company__activ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值