use of org.hibernate.mapping.PersistentClass in project jbosstools-hibernate by jbosstools.
the class FacadeFactoryTest method testCreateHQLQueryPlan.
@Test
public void testCreateHQLQueryPlan() {
final Collection<PersistentClass> entityBindings = new ArrayList<PersistentClass>();
final StandardServiceRegistryBuilder standardServiceRegistryBuilder = new StandardServiceRegistryBuilder();
standardServiceRegistryBuilder.applySetting("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
final StandardServiceRegistry serviceRegistry = standardServiceRegistryBuilder.build();
final MetadataSources metadataSources = new MetadataSources(serviceRegistry);
final MetadataImplementor metadata = (MetadataImplementor) metadataSources.buildMetadata();
Table t = new Table("FOO");
Column c = new Column("foo");
t.addColumn(c);
PrimaryKey key = new PrimaryKey(t);
key.addColumn(c);
t.setPrimaryKey(key);
SimpleValue sv = new SimpleValue(metadata);
sv.setNullValue("null");
sv.setTypeName(Integer.class.getName());
sv.setTable(t);
sv.addColumn(c);
final RootClass rc = new RootClass(null);
rc.setEntityName("foo");
rc.setJpaEntityName("foo");
rc.setIdentifier(sv);
rc.setTable(t);
entityBindings.add(rc);
MetadataImplementor wrapper = (MetadataImplementor) Proxy.newProxyInstance(facadeFactory.getClassLoader(), new Class[] { MetadataImplementor.class }, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if ("getEntityBinding".equals(method.getName()) && args != null && args.length == 1 && "foo".equals(args[0])) {
return rc;
} else if ("getEntityBindings".equals(method.getName())) {
return entityBindings;
}
return method.invoke(metadata, args);
}
});
SessionFactoryImpl sfi = new SessionFactoryImpl(wrapper, new SessionFactoryOptionsBuilder(serviceRegistry));
Map<String, Filter> filters = Collections.emptyMap();
HQLQueryPlan hqlQueryPlan = new HQLQueryPlan("from foo", false, filters, sfi);
IHQLQueryPlan facade = facadeFactory.createHQLQueryPlan(hqlQueryPlan);
Assert.assertSame(hqlQueryPlan, ((IFacade) facade).getTarget());
}
use of org.hibernate.mapping.PersistentClass in project jbosstools-hibernate by jbosstools.
the class ConfigurationFacadeTest method testAddClass.
@Test
public void testAddClass() {
PersistentClass persistentClass = new RootClass(null);
persistentClass.setEntityName("Foo");
IPersistentClass persistentClassFacade = FACADE_FACTORY.createPersistentClass(persistentClass);
Assert.assertNull(configurationFacade.getClassMapping("Foo"));
configurationFacade = FACADE_FACTORY.createConfiguration(configuration);
configurationFacade.addClass(persistentClassFacade);
Assert.assertEquals(persistentClassFacade, configurationFacade.getClassMapping("Foo"));
}
use of org.hibernate.mapping.PersistentClass in project jbosstools-hibernate by jbosstools.
the class ConfigurationFacadeTest method testReadFromJDBC.
@Test
public void testReadFromJDBC() throws Exception {
Connection connection = DriverManager.getConnection("jdbc:h2:mem:test");
Statement statement = connection.createStatement();
statement.execute("CREATE TABLE FOO(id int primary key, bar varchar(255))");
JdbcMetadataConfiguration jdbcMdCfg = new JdbcMetadataConfiguration();
jdbcMdCfg.setProperty("hibernate.connection.url", "jdbc:h2:mem:test");
configurationFacade = FACADE_FACTORY.createConfiguration(jdbcMdCfg);
Metadata metadata = jdbcMdCfg.getMetadata();
Assert.assertNull(metadata);
jdbcMdCfg = new JdbcMetadataConfiguration();
jdbcMdCfg.setProperty("hibernate.connection.url", "jdbc:h2:mem:test");
configurationFacade = FACADE_FACTORY.createConfiguration(jdbcMdCfg);
configurationFacade.readFromJDBC();
metadata = jdbcMdCfg.getMetadata();
Iterator<PersistentClass> iterator = metadata.getEntityBindings().iterator();
PersistentClass persistentClass = (PersistentClass) iterator.next();
Assert.assertEquals("Foo", persistentClass.getClassName());
statement.execute("DROP TABLE FOO");
connection.close();
}
use of org.hibernate.mapping.PersistentClass in project hibernate-orm by hibernate.
the class ModelBinder method bindSecondaryTable.
private void bindSecondaryTable(MappingDocument mappingDocument, SecondaryTableSource secondaryTableSource, Join secondaryTableJoin, final EntityTableXref entityTableXref) {
final PersistentClass persistentClass = secondaryTableJoin.getPersistentClass();
final Identifier catalogName = determineCatalogName(secondaryTableSource.getTableSource());
final Identifier schemaName = determineSchemaName(secondaryTableSource.getTableSource());
final Namespace namespace = database.locateNamespace(catalogName, schemaName);
Table secondaryTable;
final Identifier logicalTableName;
if (TableSource.class.isInstance(secondaryTableSource.getTableSource())) {
final TableSource tableSource = (TableSource) secondaryTableSource.getTableSource();
logicalTableName = database.toIdentifier(tableSource.getExplicitTableName());
secondaryTable = namespace.locateTable(logicalTableName);
if (secondaryTable == null) {
secondaryTable = namespace.createTable(logicalTableName, false);
} else {
secondaryTable.setAbstract(false);
}
secondaryTable.setComment(tableSource.getComment());
} else {
final InLineViewSource inLineViewSource = (InLineViewSource) secondaryTableSource.getTableSource();
secondaryTable = new Table(namespace, inLineViewSource.getSelectStatement(), false);
logicalTableName = Identifier.toIdentifier(inLineViewSource.getLogicalName());
}
secondaryTableJoin.setTable(secondaryTable);
entityTableXref.addSecondaryTable(mappingDocument, logicalTableName, secondaryTableJoin);
bindCustomSql(mappingDocument, secondaryTableSource, secondaryTableJoin);
secondaryTableJoin.setSequentialSelect(secondaryTableSource.getFetchStyle() == FetchStyle.SELECT);
secondaryTableJoin.setInverse(secondaryTableSource.isInverse());
secondaryTableJoin.setOptional(secondaryTableSource.isOptional());
if (log.isDebugEnabled()) {
log.debugf("Mapping entity secondary-table: %s -> %s", persistentClass.getEntityName(), secondaryTable.getName());
}
final SimpleValue keyBinding = new DependantValue(mappingDocument, secondaryTable, persistentClass.getIdentifier());
if (mappingDocument.getBuildingOptions().useNationalizedCharacterData()) {
keyBinding.makeNationalized();
}
secondaryTableJoin.setKey(keyBinding);
keyBinding.setCascadeDeleteEnabled(secondaryTableSource.isCascadeDeleteEnabled());
// NOTE : no Type info to bind...
relationalObjectBinder.bindColumns(mappingDocument, secondaryTableSource.getPrimaryKeyColumnSources(), keyBinding, secondaryTableSource.isOptional(), new RelationalObjectBinder.ColumnNamingDelegate() {
int count = 0;
@Override
public Identifier determineImplicitName(LocalMetadataBuildingContext context) {
final Column correspondingColumn = entityTableXref.getPrimaryTable().getPrimaryKey().getColumn(count++);
return database.toIdentifier(correspondingColumn.getQuotedName());
}
});
keyBinding.setForeignKeyName(secondaryTableSource.getExplicitForeignKeyName());
// skip creating primary and foreign keys for a subselect.
if (secondaryTable.getSubselect() == null) {
secondaryTableJoin.createPrimaryKey();
secondaryTableJoin.createForeignKey();
}
}
use of org.hibernate.mapping.PersistentClass in project hibernate-orm by hibernate.
the class ConfigurationTest method testSharedCacheModeDisable.
@Test
public void testSharedCacheModeDisable() {
MetadataImplementor metadata = buildMetadata(SharedCacheMode.DISABLE_SELECTIVE);
PersistentClass pc = metadata.getEntityBinding(ExplicitlyCacheableEntity.class.getName());
assertTrue(pc.isCached());
pc = metadata.getEntityBinding(ExplicitlyNonCacheableEntity.class.getName());
assertFalse(pc.isCached());
pc = metadata.getEntityBinding(NoCacheableAnnotationEntity.class.getName());
assertTrue(pc.isCached());
}
Aggregations