private SessionFactory buildSessionFactory() { // Extra options located in src/test/resources/hibernate.properties Properties envProps = Environment.getProperties(); envProps.setProperty(Environment.DIALECT, "HSQL"); envProps.setProperty(Environment.HBM2DDL_AUTO, "create-drop"); envProps.setProperty( Environment.CONNECTION_PROVIDER, JtaAwareConnectionProviderImpl.class.getName()); envProps.setProperty(Environment.JNDI_CLASS, "org.jnp.interfaces.NamingContextFactory"); envProps.setProperty(Environment.TRANSACTION_STRATEGY, "jta"); envProps.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "jta"); envProps.setProperty(Environment.RELEASE_CONNECTIONS, "auto"); envProps.setProperty(Environment.USE_SECOND_LEVEL_CACHE, "true"); envProps.setProperty(Environment.USE_QUERY_CACHE, "true"); envProps.put(AvailableSettings.JTA_PLATFORM, new JBossStandAloneJtaPlatform()); envProps.setProperty( Environment.CACHE_REGION_FACTORY, "org.hibernate.test.cache.infinispan.functional.SingleNodeTestCase$TestInfinispanRegionFactory"); serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry(envProps); MetadataSources sources = new MetadataSources(serviceRegistry); String[] mappings = new String[] {"org/hibernate/test/cache/infinispan/functional/Item.hbm.xml"}; for (String mapping : mappings) { sources.addResource(mapping); } Metadata metadata = sources.buildMetadata(); Iterator<EntityBinding> entityIter = metadata.getEntityBindings().iterator(); while (entityIter.hasNext()) { EntityBinding binding = entityIter.next(); binding.getHierarchyDetails().getCaching().setAccessType(AccessType.TRANSACTIONAL); binding.getHierarchyDetails().getCaching().setRequested(TruthValue.TRUE); binding.getHierarchyDetails().getCaching().setRegion(binding.getEntityName()); binding.getHierarchyDetails().getCaching().setCacheLazyProperties(true); } Iterator<PluralAttributeBinding> collectionIter = metadata.getCollectionBindings().iterator(); while (collectionIter.hasNext()) { PluralAttributeBinding binding = collectionIter.next(); binding.getCaching().setAccessType(AccessType.TRANSACTIONAL); binding.getCaching().setRequested(TruthValue.TRUE); binding .getCaching() .setRegion( StringHelper.qualify( binding.getContainer().seekEntityBinding().getEntityName(), binding.getAttribute().getName())); binding.getCaching().setCacheLazyProperties(true); } return metadata.buildSessionFactory(); }
@Test @Resources(annotatedClasses = VersionBindingTests.Item2.class) public void testVersionUnsavedValue() { EntityBinding binding = getEntityBinding(Item2.class); assertTrue(binding.isVersioned()); assertEquals("undefined", binding.getHierarchyDetails().getEntityVersion().getUnsavedValue()); }
@Test @Resources(annotatedClasses = {User.class, Address.class}) public void testEmbeddable() { EntityBinding binding = getEntityBinding(User.class); EntityIdentifier identifier = binding.getHierarchyDetails().getEntityIdentifier(); assertTrue(!identifier.isNonAggregatedComposite()); assertEquals(identifier.getNature(), EntityIdentifierNature.AGGREGATED_COMPOSITE); }
/** * Used to instantiate the EntityBinding for an entity that is a subclass (sub-entity) in an * inheritance hierarchy * * @param superEntityBinding The entity binding of this binding's super */ public EntityBinding(EntityBinding superEntityBinding) { this.superEntityBinding = superEntityBinding; this.hierarchyDetails = superEntityBinding.getHierarchyDetails(); this.subEntityBindingId = superEntityBinding.nextSubEntityBindingId(); // TODO: the ID attribute binding needs to be recreated for this EntityBinding // otherwise, this != // hierarchyDetails.getEntityIdentifier().getAttributeBinding().getContainer() }
@Test @Resources(annotatedClasses = VersionBindingTests.Item2.class) public void testVersionTypeAttribute() { EntityBinding binding = getEntityBinding(Item2.class); assertTrue(binding.isVersioned()); HibernateTypeDescriptor descriptor = binding .getHierarchyDetails() .getEntityVersion() .getVersioningAttributeBinding() .getHibernateTypeDescriptor(); // assertEquals( "Long", descriptor.getExplicitTypeName() ); assertEquals(Long.class.getName(), descriptor.getClassReference().getName()); assertEquals(Long.class, descriptor.getClassReference().getResolvedClass()); assertNotNull(descriptor.getResolvedTypeMapping()); assertEquals(LongType.class, descriptor.getResolvedTypeMapping().getClass()); assertNotNull(descriptor.getTypeParameters()); assertTrue(descriptor.getTypeParameters().isEmpty()); }
@Test @Resources(annotatedClasses = {TableWithUniqueConstraint.class, SecondTable.class}) public void testTableUniqueConstraints() { EntityBinding binding = getEntityBinding(TableWithUniqueConstraint.class); testTableUniqueConstraints(binding.getPrimaryTable(), "u1", 2); testTableUniqueConstraints( ((MultipleHiLoPerTableGenerator) binding.getHierarchyDetails().getEntityIdentifier().getIdentifierGenerator()) .getTable(), "u2", 1); testTableUniqueConstraints( SchemaUtil.getCollection(TableWithUniqueConstraint.class, "secondTables", meta) .getPluralAttributeKeyBinding() .getCollectionTable(), "u3", 2); testTableUniqueConstraints( SchemaUtil.getCollection(TableWithUniqueConstraint.class, "elements", meta) .getPluralAttributeKeyBinding() .getCollectionTable(), "u4", 1); }