如何用索引定义派生属性?

时间:2014-10-14 10:49:46

标签: java mysql hibernate

我正在使用mysql和hibernate 4.2.1,我的应用程序是独立的。即没有春天等等。

我有以下课程:

@Entity(name = "families")
class Family {
   private String name;
}

@Entity(name = "persons")
class Person {
   private Family family;
   private String name;
}

我的问题是,为类人物设置派生属性fullName, 构造为连接的family.name和this.name。此外,在此属性的DB中有一个索引也很好。

我试过这样的事,但没有成功。

@Index(...)
@Column(insertable = false, updatable = false)
@Formula("family.name || ' ' || name")
private String fullName;

即,我不明白我应该在@Index中写什么,以及@Formula的内容是什么。 你能帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

@Formula用于id:

如果我们想在您的实体中应用虚拟属性来获取计算值,我们可以使用@Formula注释来设置公式。这个公式可以像我们想要的那样复杂。

@Column(name="length")
    private int length;

    @Column(name="width") 
    private int width;

    @Formula(" length * width ")
    public long area;

使用您自己的公式计算任何内容

@Index用于:

@Index在属性级别应用索引。如果实体的属性使用@Index注释,则将在列上应用具有给定名称的索引。

@Column(name="name")
    @Index(name="nameIndex")
    private String name;