php 收藏代码,php 收藏代码

//PersistenceUnitPostProcessor实现类,用于修改PersistenceUnitManager读取到的各个对应persistence.xml产生的PersistenceUnitInfo

package com.iwt.common.persist.jpa;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

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

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

import com.iwt.common.util.CommonUtil;

/**

* 合并多个JAR中的JPA实体到一个持久化单元

*

* This merges all JPA entities from multiple jars. To use it, all entities must be listed in their respective

* persistence.xml files using the tag.

*

* @see http://forum.springsource.org/showthread.php?t=61763 a

* @see http://javathoughts.capesugarbird.com/2009/02/jpa-and-multiple-persistence -units.html b

*/

public class MergingPersistenceUnitPostProcessor implements PersistenceUnitPostProcessor {

Map> puiClasses = new HashMap>();

String persistenceUnitName; //最终返回的持久化单元名字

List includePersistenceUnitNames; //需要过滤的持久化单元名称列表

public MergingPersistenceUnitPostProcessor() {}

public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) {

String pun = pui.getPersistenceUnitName();

System.out.println(pun);

if(!includePersistenceUnitNames.contains(pun)) {

pui.getManagedClassNames().clear();

}

List classes = puiClasses.get(pun);

if (classes == null) {

classes = new ArrayList();

puiClasses.put(pun, classes);

}

for (List subClasses : puiClasses.values()) {

pui.getManagedClassNames().addAll(subClasses);

}

final List names = pui.getManagedClassNames();

classes.addAll(names);

pui.setPersistenceUnitName(persistenceUnitName);

System.out.println("---------------------------------------------------------------");

System.out.println(pui);

for (String cn : names) {

System.out.println(cn);

}

System.out.println("---------------------------------------------------------------");

}

public void scanEntity() {}

//--------------------------------------------set-----------------------------------------------

public void setIncludePersistenceUnitNames(List includePersistenceUnitNames) {

CommonUtil.checkArgument(includePersistenceUnitNames == null || includePersistenceUnitNames.isEmpty(), "需要合并的持久化单元名称列表不能为空!");

this.includePersistenceUnitNames = includePersistenceUnitNames;

}

public void setPersistenceUnitName(String persistenceUnitName) {

CommonUtil.checkArgument(persistenceUnitName == null || persistenceUnitName.isEmpty(), "合并后的持久化单元名称不能为空!");

this.persistenceUnitName = persistenceUnitName;

}

}

配置方法:

Java代码 收藏代码

class="com.iwt.common.persist.jpa.MergingPersistenceUnitPostProcessor">

huskyPU

huicardPU

huimerchantPU

taskCenterPU

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值