java 如何动态初始化Annotation

标签 java hibernate jpa orm hibernate-mapping

我有以下结构:

@MappedSuperclass
public class AbstractEntitySequence {

@Id
@GeneratedValue( strategy = GenerationType.SEQUENCE, generator="X?" )
@SequenceGenerator( allocationSize = 1, name = "X?" )
@Column( name = "id", nullable = false, unique = true )
private Long id;

和子实体:

@Entity
@Table( name = "BANK" )
public class Bank extends AbstractEntitySequence implements Serializable {
...
}

和其他实体。

我需要每个实体都有一个序列生成器名称,但我不想将其放置在每个实体中(如 ^C ^V) 是否有可能以某种方式从子类初始化抽象类中的注释(替换 X1)?

最佳答案

您可以定义@SequenceGenerator仅在一个实体类中,它将可用于所有实体,因为根据 JavaDoc:

The scope of the generator name is global to the persistence unit (across all generator types).

因此,您的映射应如下所示:

@Entity
@SequenceGenerator(name="X", allocationSize=1)
public class Bank {

    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="X")
    @Id long id;
}

@Entity
public class InsuranceCompany {

    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="X")
    @Id long id;
}

关于java 如何动态初始化Annotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28916371/

相关文章:

java - 缺少属性异常

Java:查找字符串之间的匹配项

mysql - jpa/spring/hibernate中的简单乐观锁问题

java - 未找到当前线程 : Spring 3 and Hibernate 4 (Using @PostConstruct annotation) 的 session

java - 使用 Spring Data JPA 通过 @OneToMany 关系属性对实体进行排序

java - Android 中的原生广告 Admob 到自定义列表适配器

java - 想知道钛加速器的功能吗?

java - Hibernate 不连接 MySql

java - 在没有映射表的情况下存储 JSP HashMap?

java.lang.ClassNotFoundException : javax. 持久性。用 JPA 找不到持久性