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 ...
}
我上面,你说Application.properties注意到以上。那只是一个错字吗?该文件应该命名为application.properties(注意小写),并且它必须放在src/main/resources下,以便Spring自动识别它 –
是的右小写。应用程序看到这个文件,并从它配置。写作时我只想念这里。将编辑帖子。 – Pavlo
也许这有助于http://stackoverflow.com/questions/22816817/hibernate-create-index – RubioRic