Tôi có lớp ngủ đông này với chú thích:Cách tạo chú thích meta ở cấp trường?
@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;
...
}
Kể từ khi tôi không won't chú thích mỗi id lĩnh vực lớp học của tôi theo cách đó, tôi đã cố gắng để tạo ra một anotation tùy chỉnh:
@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;
}
vì vậy mà tôi có thể sử dụng chú thích này trong lớp học của tôi:
@Entity
public class SimponsFamily{
@EntityId
private long id;
...
}
tôi phải viết @Id
và các chú thích @GeneratedValue
ở cấp trường vì chúng không hỗ trợ TYPE RetentionPolicy. Giải pháp này dường như hoạt động.
Câu hỏi của tôi:
như thế nào các chú thích cấp cơ sở trong các chú thích của tôi tùy chỉnh (và giá trị) chuyển đến việc sử dụng của tôi ENTITYID chú thích?
Điều gì về các giá trị mặc định mà tôi đã đặt trong chú thích tùy chỉnh của mình, chúng có được sử dụng vì tôi không chỉ định thuộc tính khi sử dụng không?
Đó là cách ưa thích để sử dụng chú thích ở cấp trường trong chú thích?
Hy vọng của tôi là tôi có thể tránh được một lớp cha, nhưng có lẽ đây là con đường để đi ... có lẽ câu hỏi của tôi là một vấn đề chú thích chung hơn là một vấn đề hibernate. Dù sao cũng cảm ơn! – thilko