我有这个带有注释的休眠类:
@Entity
public class SimponsFamily{
@Id
@TableGenerator(name = ENTITY_ID_GENERATOR,
table = ENTITY_ID_GENERATOR_TABLE,
pkColumnName = ENTITY_ID_GENERATOR_TABLE_PK_COLUMN_NAME,
valueColumnName = ENTITY_ID_GENERATOR_TABLE_VALUE_COLUMN_NAME)
@GeneratedValue(strategy = GenerationType.TABLE, generator = ENTITY_ID_GENERATOR)
private long id;
...
}
由于我不会以这种方式注释类的每个id字段,因此我尝试创建一个自定义注释:
@TableGenerator(name = ENTITY_ID_GENERATOR,
table = ENTITY_ID_GENERATOR_TABLE,
pkColumnName = ENTITY_ID_GENERATOR_TABLE_PK_COLUMN_NAME,
valueColumnName = ENTITY_ID_GENERATOR_TABLE_VALUE_COLUMN_NAME)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface EntityId {
@GeneratedValue(strategy = GenerationType.TABLE, generator = ENTITY_ID_GENERATOR)
public int generator() default 0;
@Id
public long id() default 0;
}
这样我就可以在我的课堂上使用这个注释:
@Entity
public class SimponsFamily{
@EntityId
private long id;
...
}
我必须在字段级别编写@Id
和@GeneratedValue
注释,因为它们不支持 TYPE RetentionPolicy。这个解决方案似乎有效。
我的问题:
我的自定义注释(和值)中的字段级注释如何转移到我对 EntityId 注释的使用中?
我在自定义注释中设置的默认值怎么样,因为我没有在使用时指定属性,所以它们被使用了吗?
这是在注释中使用字段级别的注释的首选方式吗?