- @PrimaryKeyJoinColumn
-
在
JOINED
继承策略的情况下用于为实体指定外键列,该外键是父类实体主键的引用。参数:
-
name
– 实体的外键列的名称 -
referencedColumnName
– 父类实体的主键列的名称
例如:
@PrimaryKeyJoinColumn(name = "CARD_ID", referencedColumnName = "ID")
-
3.2.1.2.1. 类注解
- @Embeddable
-
定义一个与所属实体存储在同一表中的嵌入实体。
应使用 @MetaClass 注解来指定实体名称。
- @EnableRestore
-
表示软删除的实体实例是否可以通过 Administration > Data Recovery 菜单打开的
core$Entity.restore
界面进行恢复。
- @Entity
-
声明一个类是一个数据模型实体。
参数:
-
name
– 实体的名称,必须带有前缀,以_
符号分隔前缀。建议使用项目的简称作为前缀来形成单独的命名空间。
例如:
@Entity(name = "sales_Customer")
-
- @Extends
-
表示该实体是一个对基础实体的扩展,在应用程序中应该使用它来代替其基础实体。参阅 功能扩展。
- @DiscriminatorColumn
-
在
SINGLE_TABLE
和JOINED
继承策略的情况下,用于定义负责区分实体类型的数据库列。参数:
-
name
– 鉴别器列名。 -
discriminatorType
– 鉴别器列的类型。
例如:
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.INTEGER)
-
- @DiscriminatorValue
-
定义此实体的鉴别器列值。
例如:
@DiscriminatorValue("0")
- @IdSequence
-
如果实体是
BaseLongIdEntity
或BaseIntegerIdEntity
的子类,则应明确定义用于生成标识符的数据库序列名称。如果实体没有此注解,则框架将自动生成名称并创建一个序列。参数:
-
name
– 序列名称。 -
cached
- 可选参数,定义序列应该以 cuba.numberIdCacheSize 递增,并将未使用的 ID 值缓存在内存中。默认为 False。
默认情况下,序列都在主 数据存储 创建。但是如果 cuba.useEntityDataStoreForIdSequence 应用程序属性设置为
true
,序列则会创建在实体所在的数据存储中。 -
- @Inheritance
-
定义实体类的继承策略。此注解在实体继承层次的根类上指定。
参数:
-
strategy
– 继承策略,默认为SINGLE_TABLE
。
-
- @Listeners
- @MappedSuperclass
-
表示该类用作其它实体类的父类,其属性必须用作后代实体的一部分。这种类不关联任何特定的数据库表。
数据建模:实体继承 向导演示了如何定义实体继承关系。
- @MetaClass
-
用于声明非持久化或嵌入实体(也就是不能用
@javax.persistence.Entity
注解)参数:
-
name
– 实体名称,必须以一个前缀开头,以_
符号分隔前缀。建议使用项目的简称作为前缀来形成单独的命名空间。
例如:
@MetaClass(name = "sales_Customer")
-
- @NamePattern
-
定义如何创建表示单一实体的字符串。可以认为是应用程序级别的
toString()
方法。在 UI 中到处都用得上,比如在类似TextField
或者LookupField
的单一字段中需要展示一个实体。也可以通过编程的方式使用MetadataTools.getInstanceName()
方法获取实例名称。注解值应该是
{0}|{1}
格式的字符串,其中:例如:
@NamePattern("%s|name")
@NamePattern("%s - %s|name,date")
@NamePattern("#getCaption|amount,customer") ... public String getCaption(){ String prefix = ""; if (amount > 5000) { prefix = "Grade 1 "; } else { prefix = "Grade 2 "; } return prefix + customer.name; }
- @PostConstruct
-
可以为方法指定此注解。在使用 Metadata.create() 或者类似的
DataManager.create()
和DataContext.create()
方法创建实体实例之后将立即调用带此注解的方法。参考 初始化实体值 指南,了解如何在实体类中使用
@PostConstruct
注解直接定义初始值。使用此注解的方法可以使用在
global
模块可用的 Spring bean 作为参数。示例:@PostConstruct public void postConstruct(Metadata metadata, SomeBean someBean) { // ... }
- @PublishEntityChangedEvents
-
表示实体在数据库改动时,框架会发送 EntityChangedEvent 事件。
- @Table
-
定义实体的数据库表。
参数:
-
name
– 表名
例如:
@Table(name = "SALES_CUSTOMER")
-
- @TrackEditScreenHistory
-
表示系统将会保存编辑界面的打开历史记录,并能够在
sec$ScreenHistory.browse
展示。界面可以使用下面的 web-menu.xml 元素添加到主菜单:
<item id="sec$ScreenHistory.browse" insertAfter="settings"/>