Java 如何使用索引定义派生属性?
我在Hibernate4.2.1中使用mysql,我的应用程序是独立的。即没有弹簧等 我有以下课程:Java 如何使用索引定义派生属性?,java,mysql,hibernate,Java,Mysql,Hibernate,我在Hibernate4.2.1中使用mysql,我的应用程序是独立的。即没有弹簧等 我有以下课程: @Entity(name = "families") class Family { private String name; } @Entity(name = "persons") class Person { private Family family; private String name; } 我的问题是类person要有一个派生属性fullName, 构造为串联的
@Entity(name = "families")
class Family {
private String name;
}
@Entity(name = "persons")
class Person {
private Family family;
private String name;
}
我的问题是类person要有一个派生属性fullName,
构造为串联的family.name和this.name。另外,对于这个属性,最好有一个DB索引
我试过这样的方法,但没有成功
@Index(...)
@Column(insertable = false, updatable = false)
@Formula("family.name || ' ' || name")
private String fullName;
也就是说,我不明白我应该在@Index中写什么,以及@Formula的内容是什么。
你能帮帮我吗
谢谢。@公式用于: 如果要在实体中应用虚拟属性以获得计算值,可以使用@Formula annotation设置公式。这个公式可以是我们想要的那么复杂
@Column(name="length")
private int length;
@Column(name="width")
private int width;
@Formula(" length * width ")
public long area;
用你自己的公式计算任何东西
@索引用于:
@索引在属性级别应用索引。如果实体的属性用@Index注释,则将在列上应用具有给定名称的索引
@Column(name="name")
@Index(name="nameIndex")
private String name;
我建议在类Person中添加新的临时属性。在get方法中,您可以根据需要连接(@Transient fullName;),例如,谢谢。仍然不明白我是如何称呼姓氏的;hibernate说这里有一个语法错误。