我可以在运行时创建元模型的实体类,还是必须手动创建它们?

如果我可以在运行时创建它们(我想使用EntityType),那么该解决方案的优缺点是什么?

好的,有点误解...我想我应该为所有实体类创建名称为EntityClass_的N个类...现在,我注意到Netbeans在构建项目时会创建文件EntityClass_.class,我可以参考他们!
有关更多信息,要在netbeans中激活此选项,请使用网页上的链接来说明此选项:

http://blogs.oracle.com/arungupta/entry/totd_148_jpa2_metamodel_classes

好的,现在的问题是:如何选择正确的答案? :)
对不起,西姆,但皮奥特(Piotr)更加清晰具体。

最佳答案

您可以自己创建一个元模型,也可以使用元模型生成器来完成。该生成器特定于JPA提供程序,即对于EclipseLink,它可以按以下方式执行:

javac -processor org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor
      -proc:only
      -classpath lib/*.jar;punit
      *.java


但是,它不是在运行时执行的,而是在构建应用程序时或作为单独的进程执行的。在运行时执行此操作没有多大意义,因为在创建查询时需要此(当然,如果要使用它)元模型,因此在开发阶段。

只是为了使这个答案更完整-您还可以使用EntityManager#getMetamodel()EntityManagerFactory#getMetamodel()访问Metamodel而不指定它。

我肯定会选择在设计Criteria API查询时显式生成元模型并使用它。它只是使其更加清晰,明显,并让您在开发阶段发现错误。

09-26 14:56