下面列出了怎么用javax.persistence.PersistenceUnitUtil的API类实例代码及写法,或者点击链接到github查看源代码。
public void init() {
log.info("call init, id @" + id);
if (id != null) {
//this.post = em.find(Post.class, this.id);
EntityGraph postEntityGraph=em.getEntityGraph("post");
// EntityGraph postEntityGraph=em.createEntityGraph(Post.class);
// postEntityGraph.addAttributeNodes("title");
// postEntityGraph.addSubgraph("comments").addAttributeNodes("content");
this.post=em
.createQuery("select p from Post p where p.id=:id", Post.class)
.setHint("javax.persistence.loadgraph", postEntityGraph)
.setParameter("id", this.id)
.getResultList()
.get(0);
PersistenceUnitUtil util=em.getEntityManagerFactory().getPersistenceUnitUtil();
log.info("title is [email protected]"+util.isLoaded(this.post, "title"));
log.info("body is [email protected]"+util.isLoaded(this.post, "body"));
log.info("comments is [email protected]"+util.isLoaded(this.post, "comments"));
} else {
throw new RuntimeException("id is required");
}
}
/**
* Initialize a entity.
* @param em entity manager to use
* @param entity entity to initialize
* @param depth max depth on recursion
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void initialize(EntityManager em, Object entity, int depth) {
// return on nulls, depth = 0 or already initialized objects
if (entity == null || depth == 0) {
return;
}
PersistenceUnitUtil unitUtil = em.getEntityManagerFactory().getPersistenceUnitUtil();
EntityType entityType = em.getMetamodel().entity(entity.getClass());
Set<Attribute> attributes = entityType.getDeclaredAttributes();
Object id = unitUtil.getIdentifier(entity);
if (id != null) {
Object attached = em.find(entity.getClass(), unitUtil.getIdentifier(entity));
for (Attribute a : attributes) {
if (!unitUtil.isLoaded(entity, a.getName())) {
if (a.isCollection()) {
intializeCollection(em, entity, attached, a, depth);
}
else if(a.isAssociation()) {
intialize(em, entity, attached, a, depth);
}
}
}
}
}
@Test
@InSequence(2)
public void shouldNotLoadLazyAssociationsWithoutGraph() throws Exception
{
House house = repository.findOptionalByName("Bellevue");
assertNotNull(house);
PersistenceUnitUtil puu = entityManager.getEntityManagerFactory().getPersistenceUnitUtil();
assertFalse(puu.isLoaded(house, "flats"));
assertFalse(puu.isLoaded(house, "garages"));
}
public static PersistenceUnitUtil get(EntityManager entityManager)
{
final EntityManagerFactory entityManagerFactory = entityManager.getEntityManagerFactory();
final String vendorName = (String) entityManagerFactory.getProperties().get("VendorName");
if (vendorName != null && "openjpa".equalsIgnoreCase(vendorName))
{
return new OpenJpaPersistenceUnitUtilDelegate(entityManager);
}
return entityManagerFactory.getPersistenceUnitUtil();
}
@Override
public PersistenceUnitUtil getPersistenceUnitUtil() {
return null;
}
@Override
public PersistenceUnitUtil getPersistenceUnitUtil() {
return delegate.getPersistenceUnitUtil();
}
@Override
public PersistenceUnitUtil getPersistenceUnitUtil() {
validateNotClosed();
return jpaPersistenceUnitUtil;
}
public PersistenceUnitUtil getPersistenceUnitUtil() {
throw new UnsupportedOperationException("Not supported.");
}
@Override public PersistenceUnitUtil getPersistenceUnitUtil() {
return null;
}
@Override
public PersistenceUnitUtil getPersistenceUnitUtil() {
return null;
}
@Override
public PersistenceUnitUtil getPersistenceUnitUtil( )
{
// TODO Auto-generated method stub
return null;
}
@Override
public PersistenceUnitUtil getPersistenceUnitUtil() {
return delegate().getPersistenceUnitUtil();
}
@Test
public void testOdataJpaAccessFactory() {
ODataJPAFactoryImpl oDataJPAFactoryImpl = new ODataJPAFactoryImpl();
ODataJPAAccessFactory jpaAccessFactory = oDataJPAFactoryImpl
.getODataJPAAccessFactory();
ODataJPAContextImpl oDataJPAContextImpl = new ODataJPAContextImpl();
EntityManagerFactory emf = new EntityManagerFactory() {
@Override
public boolean isOpen() {
// TODO Auto-generated method stub
return false;
}
@Override
public Map<String, Object> getProperties() {
// TODO Auto-generated method stub
return null;
}
@Override
public PersistenceUnitUtil getPersistenceUnitUtil() {
// TODO Auto-generated method stub
return null;
}
@Override
public Metamodel getMetamodel() {
// TODO Auto-generated method stub
return null;
}
@Override
public CriteriaBuilder getCriteriaBuilder() {
// TODO Auto-generated method stub
return null;
}
@Override
public Cache getCache() {
// TODO Auto-generated method stub
return null;
}
@SuppressWarnings("rawtypes")
@Override
public EntityManager createEntityManager(final Map arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public EntityManager createEntityManager() {
// TODO Auto-generated method stub
return null;
}
@Override
public void close() {
// TODO Auto-generated method stub
}
};
oDataJPAContextImpl.setEntityManagerFactory(emf);
oDataJPAContextImpl.setPersistenceUnitName("pUnit");
assertNotNull(jpaAccessFactory.getODataJPAMessageService(new Locale(
"en")));
assertNotNull(jpaAccessFactory.createODataJPAContext());
assertNotNull(jpaAccessFactory
.createJPAEdmProvider(oDataJPAContextImpl));
assertNotNull(jpaAccessFactory
.createODataProcessor(oDataJPAContextImpl));
}
private PersistenceUnitUtil persistenceUnitUtil()
{
return PersistenceUnitUtilDelegateFactory.get(entityManager());
}
@Override
public PersistenceUnitUtil getPersistenceUnitUtil()
{
return null;
}