JPA - Annotations para Indice. Existe?

4 respostas
E

Tenho o seguinte campo no JPA:

@Column(name = "time") private long time = 0;

Para questões de performance fui diretamente no MySql e coloquei este campo como indice.
Existe como eu definir que este campo deve ser indexado via Annotations??

4 Respostas

A

Coloca assim:

@Index(name = "time")  
private long time = 0;
E

org.hibernate.annotations.Index funciona aparentemente se eu usar apenas Hibernate para persistência.

Usando JPA não rola.

A

JPA é apenas uma especificação, você deve utilizar algum provider como Hibernate ou TopLink, então se você estiver usando JPA com Hibernate a anotação @Index vai funcionar. :smiley:

V

Eu não sei se existe algum problema em ressucitar este topico !
Acredito eu que seja melhor do que criar um novo com o mesmo assunto !
Além do mais pra min não ficou claro , e o tópico não foi respondido.
Tudo bem que o Hibernate tenha a anotação , mas o JPA puro tem ?
Eu sei que é uma especificação , e fica implicito que estou perguntando em relação
a implementações como por exemplo EclipseLink.

O fato é que estou com a base de dados dos correios , e estou fazendo uma engenharia reversa !
A partir do *.mdb converti pra .mysql , e agora preciso mapear no JPA !

no squama tem os indices , eu acredito que deva seguir exatamente a forma como squema esta pois
se nao o banco vai ficar lento , são muitos registros :

no squema.sql , exemplos de criacao de tabela :

DROP TABLE IF EXISTS `dnecom`.`LOG_FAIXA_LOCALIDADE`;
CREATE TABLE `dnecom`.`LOG_FAIXA_LOCALIDADE` (
  `LOC_NU` INT(10) NOT NULL,
  `LOC_CEP_INI` VARCHAR(8) NOT NULL,
  `LOC_CEP_FIM` VARCHAR(8) NULL,
  PRIMARY KEY (`LOC_NU`, `LOC_CEP_INI`),
  INDEX `{9C6022F4-4C99-42A4-A451-E2655C` (`LOC_NU`)
)
ENGINE = INNODB;

DROP TABLE IF EXISTS `dnecom`.`LOG_FAIXA_UF`;
CREATE TABLE `dnecom`.`LOG_FAIXA_UF` (
  `UFE_SG` VARCHAR(2) NOT NULL,
  `UFE_CEP_INI` VARCHAR(8) NOT NULL,
  `UFE_CEP_FIM` VARCHAR(8) NULL,
  PRIMARY KEY (`UFE_SG`, `UFE_CEP_INI`)
)
ENGINE = INNODB;
Criado 27 de outubro de 2008
Ultima resposta 21 de jul. de 2009
Respostas 4
Participantes 3