您需要使用配置的XML版本而不是注释。这样,您可以在运行时动态生成XML。
还是像Dynamic JPA这样的东西会让您感兴趣?
我认为有必要进一步澄清与该问题有关的问题。
第一个问题是:可以存储实体的表集是否已知?通过这种方式,我的意思是您不是在运行时动态创建表,而是希望将实体与它们关联。例如,这种情况要求在 编译时
知道三个表。如果是这种情况,则可以使用JPA继承。OpenJPA文档详细说明了每个类继承策略的表。
这种方法的优点是它是纯JPA。但是,它具有局限性,因为必须知道表,并且您不能轻易更改给定对象存储在哪个表中(如果这是您的要求),就像OO系统中的对象通常不会更改类一样或类型。
如果您想让它真正地动态并且在表之间(实质上)移动实体,那么我不确定JPA是否适合您。一个可怕的很多神奇的进入使JPA工作包括加载时织入(仪器)和缓存通常是一个或多个级别。此外,实体管理器还需要记录更改并处理托管对象的更新。我没有简单的工具可以指示实体管理器将给定实体存储在一个表或另一个表中。
这种移动操作将隐式要求从一个表中删除并插入到另一个表中。如果有子实体,这将变得更加困难。并非没有关系,但是这是一个不寻常的极端情况,我不确定有人会打扰到您。
诸如Ibatis之类的较低级SQL / JDBC框架可能会更好,因为它将为您提供所需的控件。
我还考虑过在运行时动态更改或分配注释。尽管我尚不确定这是否可能,即使我不确定是否一定有帮助。我无法想象实体管理器或缓存不会因发生这种事情而毫无希望地混淆。
我想到的另一种可能性是在运行时动态创建子类(作为匿名子类),但这仍然存在注释问题,而且我不确定如何将其添加到现有的持久性单元中。
如果您提供有关您正在做的事情和原因的更多详细信息,可能会有所帮助。不管是什么,我都倾向于认为您需要重新考虑自己在做什么或如何做,或者需要选择其他持久性技术。



