java - 如何正确使用 Hibernate @Index 注解?

标签 java hibernate grails indices

<分区>

我有一个用作实体的 Java 类,它有 2 个继承自它的类。这个类有一些索引,但这些索引没有出现在数据库中。这是我的 java 父类(super class)代码

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 项目中,当我运行该项目时,创建了数据库

最佳答案

单个@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;
}

关于java - 如何正确使用 Hibernate @Index 注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6633432/

相关文章:

java - 正则表达式无法正常工作

java - 在 Java 中定义自定义异常处理程序?

java - 如何将监听 hibernate 事件的模块与实体本身分离?

grails - Grails中的URL映射前缀

multithreading - 任务数量未知的多线程

java - vSphere Web 服务示例失败并显示 "The server sent HTTP status code 200: OK"

java - 水壶:processRow() 中的多个 putRows() 正确吗?

java - Orders 和 Employee 之间的 JPA 关系

java - 错误 : java. lang.NoClassDefFoundError:antlr/RecognitionException

grails - 在 Grails 域类上运行初始化函数