加载实体类java,java – 用JPA 2.0编程加载实体类?

在Spring的帮助下,我以符合JPA的方式进行了此操作。

我的“persistence.xml”看起来是空的,没有在< persistence-unit>元件。

然后我写了一个实现PersistenceUnitPostProcessor的类,如下所示:

import java.util.Set;

import javax.persistence.Entity;

import javax.persistence.MappedSuperclass;

import org.reflections.Reflections;

import org.reflections.scanners.TypeAnnotationsScanner;

import org.springframework.orm.jpa.persistenceunit.MutablePersistenceUnitInfo;

import org.springframework.orm.jpa.persistenceunit.PersistenceUnitPostProcessor;

public class ReflectionsPersistenceUnitPostProcessor implements PersistenceUnitPostProcessor {

private String reflectionsRoot;

private Logger log = LoggerFactory.getLogger(ReflectionsPersistenceUnitPostProcessor.class);

@Override

public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) {

Reflections r = new Reflections(this.reflectionsRoot, new TypeAnnotationsScanner());

Set entityClasses = r.getStore().getTypesAnnotatedWith(Entity.class.getName());

Set mappedSuperClasses = r.getStore().getTypesAnnotatedWith(MappedSuperclass.class.getName());

for (String clzz : mappedSuperClasses)

{

pui.addManagedClassName(clzz);

}

for (String clzz : entityClasses)

{

pui.addManagedClassName(clzz);

}

}

public String getReflectionsRoot() {

return reflectionsRoot;

}

public void setReflectionsRoot(String reflectionsRoot) {

this.reflectionsRoot = reflectionsRoot;

}

}

然后我调整了我的spring context xml,如下所示:

注意在persistenceUnitPostProcessors设置中注册ReflectionsPersistenceUnitPostProcessor。

就是这样在类路径中具有JPA实体或MappedSuperclass注释的每个类都添加到类路径中。我不得不反思一个包名称的前缀来扫描,这是为什么com.austinmichael在那里。如果您的实体不共享通用包名称前缀,则可以使用不同的包名前缀注册第二个ReflectionsPersistenceUnitPostProcessor。

但是,这是现在JPAVendor不可知论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值