2016-04-21 7 views
2

Ich erstelle ein Entitätsobjekt und versehen es mit @Index Annotation. Anwendung funktioniert, aber in der Datenbank nicht vorhanden index Ich will. Ich habe JPA und Hibernate Annotationen ohne Glück versucht. Diese Klasse in Spring Boot 1.3.3.RELEASE-Anwendung platziert. In Maven-Abhängigkeiten sehe ich hibernate-core-4.3.11.Final.jar und es entspricht PostgreSQL 9.4.5. Ich habe verschiedene Werte für spring.jpa.hibernate.ddl-auto in der Datei application.properties, wie create, create-drop, update und sogar entfernte Tabellen aus der Datenbank selbst ausprobiert.Spring Boot, Winterschlaf - wie Index auf Entity-Eigenschaft erhalten?

Bitte hilfe: Wie man Anwendung erstellen Index mit Anmerkungen erstellen?

aktualisieren

Ich spielte mit Anmerkungen und mit der gleichen Konfiguration erstellt Indizes. Ich kann nicht verstehen, was anders ist. Ich finde nur, dass es nach dem Beenden meiner Anwendung und der Erstellung von Tabellen in der Datenbank einige Zeit dauert, bis die Indizes in pgAdmin aktualisiert werden. Es sieht aus wie ein Cache-Update oder so. Auch finde ich, dass Index für verschiedene Tabellen mit demselben Namen nicht erstellen kann. Immer noch nicht, was passiert.

aktualisieren

Hier Entitätsklasse

import java.util.Date; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Index; 
import javax.persistence.ManyToOne; 
import javax.persistence.Table; 
import org.jsoup.nodes.Element; 

@Entity 
@Table(indexes = { @Index(name = "job_id_idx", columnList = "job_id")}) 
public class JobLifeTime { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Long code; 

    @Column(name="job_id", length=24) 

    private String targetJobCode; 
    @ManyToOne() 
    private ScraperTask scraperTask; 
    @Column(name="salary_low") 
    private Integer salaryMin; 
    @Column(name="salary_high") 
    private Integer salaryMax; 
    @Column(name="scrape_timestamp") 
    private Date scrapeTimestamp; 
    @Column(name="remove_timestamp") 
    private Date removeTimestamp; 

    public JobLifeTime(){} 

    //getters and setters ... 
} 
+0

ich oben bemerkt, dass Sie Application.properties sagte. War das nur ein Tippfehler? Die Datei sollte application.properties genannt werden (beachten Sie den Kleinbuchstaben) und sie muss unter src/main/resources für Spring platziert werden, damit sie automatisch erkannt wird. –

+0

Ja, rechts - Kleinbuchstaben. Anwendung sehen Sie diese Datei und nehmen Sie Config daraus. Ich vermisse nur hier, wenn ich schreibe. Wird einen Beitrag bearbeiten. – Pavlo

+0

Vielleicht hilft das http://stackoverflow.com/questions/22816817/hibernate-create-index – RubioRic

Antwort

0

Verwenden Sie die @index Anmerkung auf einem Feld, nicht über die Klasse