У меня есть такая сущность
@Table(indexes = { @Index(columnList = "UPPER(name)", name="index_name") })
@Entity public class Thing {
@Id
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
}
и я хочу использовать функциональный индекс oracle, потому что имя в основном запрашивается как заглавное значение (но дело имеет значение при извлечении данных). Я хочу функциональный индекс oracle. Можно ли сделать это с помощью спящего режима или jpa?
В настоящее время я получаю следующую ошибку: database column 'UPPER(name)' not found
(ну, я ждал ошибки с использованием только UPPER (name), но стоит попробовать)
Почему бы вам просто не сделать это (см. Ниже)? Hibernate автоматически преобразует имя индекса в верхний регистр, если это Oracle.
@Table
@Entity
public class Thing {
@Id
@Column(name = "id")
private Long id;
@Index(name = "index_name")
@Column(name = "name")
private String name;
}
Oracle будет иметь столбец с именем "NAME" и индекс на нем с именем "INDEX_NAME".
UPPER(name)
а не толькоname
значения.