/*
* Copyright 2002-2006 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.orm.jpa.vendor;
import org.hibernate.SessionFactory;
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.id.IdentifierGeneratorFactory;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.persister.entity.EntityPersister;
import org.springframework.orm.jpa.EntityManagerPlusOperations;
import org.springframework.orm.jpa.EntityManagerPlusOperations1;
/**
* @author Costin Leau
*
*/
public class HibernateJpaEntityManagerPlus implements EntityManagerPlusOperations, EntityManagerPlusOperations1 {
private SessionFactoryImplementor sessionFactory;
public HibernateJpaEntityManagerPlus(SessionFactory sessionFactory) {
this.sessionFactory = (SessionFactoryImplementor) sessionFactory;
}
public Object getGeneratorByName(String generatorName) {
return IdentifierGeneratorFactory.getIdentifierGeneratorClass(generatorName, sessionFactory.getDialect());
}
public Object getGeneratorForClass(Class mappedClass) {
ClassMetadata metadata = sessionFactory.getClassMetadata(mappedClass);
// do a sanity check
if (!metadata.hasIdentifierProperty())
return null;
if (metadata instanceof EntityPersister) {
((EntityPersister) metadata).getIdentifierGenerator();
}
return null;
}
}