我有一个java类用作一个实体,它有2个继承自它的类。这个类有一些索引,但这些索引没有出现在数据库中。这是我的java超类代码
import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import javax.persistence.Version;
import javax.persistence.OneToMany;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="service", uniqueConstraints = {@UniqueConstraint(columnNames={"name"})})
@org.hibernate.annotations.Table(appliesTo = "service",
indexes = { @Index(name = "service_name", columnNames = { "name" }),
@Index(name = "service_description", columnNames = { "description" }),
@Index(name = "service_accessNumber", columnNames = { "access_number" })
})
public class Service implements Serializable {
@Column(name="access_number",length = 95,nullable=false)
String accessNumber;
@Column(length=80,nullable=false)
String name;
@Column(length=140)
String description;
}
有谁知道我的问题是什么 注意:我的所有java类都有这个问题,但这是其中之一。所有类中的代码都与此
相同编辑:我构建一个xml文件并将其放在一个grails项目中,当我运行这个项目时,创建了数据库
答案 0 :(得分:2)
单个@Table注释是否有效?我没有尝试过,我想Hibernate @Table可能会被JPA @Table覆盖。
您也可以在列字段上尝试@Index注释:
public class Service implements Serializable {
@Index(name="service_accessnumber")
@Column(name="access_number",length = 95,nullable=false)
String accessNumber;
@Index(name="service_name")
@Column(length=80,nullable=false)
String name;
@Index(name="service_description")
@Column(length=140)
String description;
}
答案 1 :(得分:1)
我有同样的问题,但我发现它是解决方案,它可以正常使用我试试,它可能会帮助你
in your DataSource.groovy file in your grails project make sure that under
environment dbCreate is not equal to "update": if it is equal to "update", change
it to "create".
这样可以正常使用