mam tej klasy hibernacji z adnotacji:Jak tworzyć adnotacje meta na poziomie pola?
@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;
...
}
Odkąd Do not won't opisywanie każdego id pole moich klas w ten sposób, starałem się stworzyć niestandardowy adnotację:
@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;
}
tak, że mogę korzystać z tej adnotacji w mojej klasie:
@Entity
public class SimponsFamily{
@EntityId
private long id;
...
}
muszę napisać @Id
i @GeneratedValue
adnotacje na poziomie pola, ponieważ nie obsługują RetentionPolicy TYPE. Te rozwiązania wydają się działać.
Moje pytania:
Jak adnotacje szczeblu terenowym w moich własnych adnotacji (i wartości) przeniesiona do mojego użytkowania identyfikator podmiotu adnotacji?
Co z wartościami domyślnymi, które ustawiam w mojej adnotacji niestandardowej, czy są one używane, ponieważ nie określam atrybutów podczas użytkowania?
Jest to preferowany sposób korzystania z adnotacji na poziomie pola w adnotacjach?
Mam nadzieję, że mogę uniknąć superklasę, ale może to jest droga ... może moje pytanie to raczej ogólny problem z adnotacjami, a raczej problem z hibernacją. Thx i tak! – thilko