2016-04-21 21 views
2

我创建了一个实体对象,并用@Index注解对它进行了注释。应用程序工作,但在数据库中不存在我想要的索引。我尝试了JPA和Hibernate注释,但都没有运气。这个类放置在Spring引导1.3.3.RELEASE应用程序中。在Maven依赖关系中,我看到了hibernate-core-4.3.11.Final.jar,它映射到PostgreSQL 9.4.5。我在application.properties文件中为spring.jpa.hibernate.ddl-auto尝试了不同的值,例如创建,创建,删除,更新甚至从数据库中删除表。春季启动,休眠 - 如何获得实体属性的索引?

请帮助:如何使应用程序创建索引使用注释?

更新

我打与相同配置创建的注释和索引。我不明白什么不同。我只发现在停止我的应用程序和在数据库中创建的表之后,需要一些时间才能在pgAdmin中查看索引更新。它看起来像一些缓存更新左右。另外我发现不能为不同的表创建具有相同名称的索引。仍然无法得到发生的事情。

更新

这里的实体类

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

我上面,你说Application.properties注意到以上。那只是一个错字吗?该文件应该命名为application.properties(注意小写),并且它必须放在src/main/resources下,以便Spring自动识别它 –

+0

是的右小写。应用程序看到这个文件,并从它配置。写作时我只想念这里。将编辑帖子。 – Pavlo

+0

也许这有助于http://stackoverflow.com/questions/22816817/hibernate-create-index – RubioRic

回答

0

使用上的场@index注释,而不是类