苏州高端网站设计,郑州app软件定制,主备网站服务器自动切换 win2003,台州椒江区热销企业网站搭建openjpa我刚刚开始为Isis开发 OpenJPA对象库 。 在一般情况下#xff0c;可以在persistence.xml文件中注册实体类型。 但是#xff0c;Isis是一个框架#xff0c;可以构建自己的元模型#xff0c;并且可以自行确定哪些类构成实体。 因此#xff0c;我不想强迫开发人员… openjpa  我刚刚开始为Isis开发 OpenJPA对象库 。 在一般情况下可以在persistence.xml文件中注册实体类型。 但是Isis是一个框架可以构建自己的元模型并且可以自行确定哪些类构成实体。 因此我不想强迫开发人员重复自己的工作 所以难题就变成了如何在Isis代码中以编程方式注册实体类型。  看起来很简单如果有点丑陋的话。 OpenJPA允许以编程方式定义某些关键组件的实现 这些在属性映射中指定然后传递给javax.persistence.Persistence.createEntityManagernullprops 。 但它也支持可用于通过setter注入初始化那些组件的语法。   在我的情况下感兴趣的组件是openjpa.MetaDataFactory 。 有一次我以为自己会写自己的实现。 但事实证明标准实现满足了我的需要因为它允许通过其setTypesList String增幅器注入类型。 字符串列表以;分隔列表形式传递到该属性中。   所以这就是我最终得到的结果  final MapString, String props  Maps.newHashMap();final String typeList  entityTypeList();
props.put(openjpa.MetaDataFactory,org.apache.openjpa.persistence.jdbc.PersistenceMappingFactory(types  typeList  ));// ... then add in regular properties such as 
// openjpa.ConnectionURL, openjpa.ConnectionDriverName etc...entityManagerFactory  Persistence.createEntityManagerFactory(null, props); 在我的情况下 entityTypeList看起来像这样  private String entityTypeList() {final StringBuilder buf  new StringBuilder();// loop thru Isis metamodel looking for types that have been annotated using Entityfinal CollectionObjectSpecification allSpecifications  getSpecificationLoader().allSpecifications();for(ObjectSpecification objSpec: allSpecifications) {if(objSpec.containsFacet(JpaEntityFacet.class)) {final String fqcn  objSpec.getFullIdentifier();buf.append(fqcn).append(;);}}final String typeList  buf.toString();return typeList;
} 欢迎评论一如既往   参考 Dan Haywood博客博客中的JCG合作伙伴 Dan Haywood以编程方式在OpenJPA中注册实体类型 。   翻译自: https://www.javacodegeeks.com/2012/06/registering-entity-types-with-openjpa.htmlopenjpa