Search in sources :

Example 6 with Index

use of org.hibernate.mapping.Index in project hibernate-orm by hibernate.

the class AbstractJPAIndexTest method testJoinTableIndex.

@Test
public void testJoinTableIndex() {
    PersistentClass entity = metadata().getEntityBinding(Importer.class.getName());
    Property property = entity.getProperty("cars");
    Bag set = (Bag) property.getValue();
    Table collectionTable = set.getCollectionTable();
    Iterator<Index> itr = collectionTable.getIndexIterator();
    assertTrue(itr.hasNext());
    Index index = itr.next();
    assertFalse(itr.hasNext());
    assertTrue("index name is not generated", StringHelper.isNotEmpty(index.getName()));
    assertEquals(1, index.getColumnSpan());
    Iterator<Column> columnIterator = index.getColumnIterator();
    Column column = columnIterator.next();
    assertEquals("importers_id", column.getName());
    assertSame(collectionTable, index.getTable());
}
Also used : Table(org.hibernate.mapping.Table) Column(org.hibernate.mapping.Column) Bag(org.hibernate.mapping.Bag) Index(org.hibernate.mapping.Index) Property(org.hibernate.mapping.Property) PersistentClass(org.hibernate.mapping.PersistentClass) Test(org.junit.Test)

Example 7 with Index

use of org.hibernate.mapping.Index in project hibernate-orm by hibernate.

the class AbstractJPAIndexTest method testTableIndex.

@Test
public void testTableIndex() {
    PersistentClass entity = metadata().getEntityBinding(Car.class.getName());
    Iterator itr = entity.getTable().getUniqueKeyIterator();
    assertTrue(itr.hasNext());
    UniqueKey uk = (UniqueKey) itr.next();
    assertFalse(itr.hasNext());
    assertTrue(StringHelper.isNotEmpty(uk.getName()));
    assertEquals(2, uk.getColumnSpan());
    Column column = (Column) uk.getColumns().get(0);
    assertEquals("brand", column.getName());
    column = (Column) uk.getColumns().get(1);
    assertEquals("producer", column.getName());
    assertSame(entity.getTable(), uk.getTable());
    itr = entity.getTable().getIndexIterator();
    assertTrue(itr.hasNext());
    Index index = (Index) itr.next();
    assertFalse(itr.hasNext());
    assertEquals("Car_idx", index.getName());
    assertEquals(1, index.getColumnSpan());
    column = index.getColumnIterator().next();
    assertEquals("since", column.getName());
    assertSame(entity.getTable(), index.getTable());
}
Also used : UniqueKey(org.hibernate.mapping.UniqueKey) Column(org.hibernate.mapping.Column) Iterator(java.util.Iterator) Index(org.hibernate.mapping.Index) PersistentClass(org.hibernate.mapping.PersistentClass) Test(org.junit.Test)

Example 8 with Index

use of org.hibernate.mapping.Index in project hibernate-orm by hibernate.

the class ABCTest method testHigherLevelIndexDefinition.

@Test
public void testHigherLevelIndexDefinition() throws Throwable {
    Table table = metadata().getDatabase().getDefaultNamespace().locateTable(Identifier.toIdentifier("TA"));
    Iterator<Index> indexItr = table.getIndexIterator();
    boolean found = false;
    while (indexItr.hasNext()) {
        final Index index = indexItr.next();
        if ("indx_a_name".equals(index.getName())) {
            found = true;
            break;
        }
    }
    assertTrue("Unable to locate indx_a_name index", found);
}
Also used : Table(org.hibernate.mapping.Table) Index(org.hibernate.mapping.Index) Test(org.junit.Test)

Example 9 with Index

use of org.hibernate.mapping.Index in project uPortal by Jasig.

the class HibernateDbLoader method createScript.

/** Generate create scripts and add them to the script list */
@SuppressWarnings("unchecked")
protected List<String> createScript(Collection<Table> tables, Dialect dialect, Mapping mapping, String defaultCatalog, String defaultSchema) {
    final List<String> script = new ArrayList<String>(tables.size() * 2);
    for (final Table table : tables) {
        if (table.isPhysicalTable()) {
            script.add(table.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
        }
    }
    for (final Table table : tables) {
        if (table.isPhysicalTable()) {
            if (!dialect.supportsUniqueConstraintInCreateAlterTable()) {
                for (final Iterator<UniqueKey> subIter = table.getUniqueKeyIterator(); subIter.hasNext(); ) {
                    final UniqueKey uk = subIter.next();
                    final String constraintString = uk.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema);
                    if (constraintString != null) {
                        script.add(constraintString);
                    }
                }
            }
            for (final Iterator<Index> subIter = table.getIndexIterator(); subIter.hasNext(); ) {
                final Index index = subIter.next();
                script.add(index.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
            }
            if (dialect.hasAlterTable()) {
                for (final Iterator<ForeignKey> subIter = table.getForeignKeyIterator(); subIter.hasNext(); ) {
                    final ForeignKey fk = subIter.next();
                    if (fk.isPhysicalConstraint()) {
                        script.add(fk.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
                    }
                }
            }
        }
    }
    return script;
}
Also used : Table(org.hibernate.mapping.Table) UniqueKey(org.hibernate.mapping.UniqueKey) ArrayList(java.util.ArrayList) Index(org.hibernate.mapping.Index) ForeignKey(org.hibernate.mapping.ForeignKey)

Example 10 with Index

use of org.hibernate.mapping.Index in project uPortal by Jasig.

the class TableXmlHandler method startElement.

/* (non-Javadoc)
     * @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
     */
@Override
public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException {
    if ("table".equals(name)) {
        this.currentColumns = new LinkedHashMap<String, Column>();
        this.currentColumnTypes = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
    } else if ("index".equals(name)) {
        this.currentIndex = new Index();
        this.currentIndex.setTable(this.currentTable);
    } else if ("unique".equals(name)) {
        this.currentUnique = new UniqueKey();
        this.currentUnique.setTable(this.currentTable);
    }
    this.chars = new StringBuilder();
}
Also used : Column(org.hibernate.mapping.Column) UniqueKey(org.hibernate.mapping.UniqueKey) Index(org.hibernate.mapping.Index)

Aggregations

Index (org.hibernate.mapping.Index)10 Column (org.hibernate.mapping.Column)6 Table (org.hibernate.mapping.Table)5 UniqueKey (org.hibernate.mapping.UniqueKey)5 Test (org.junit.Test)5 PersistentClass (org.hibernate.mapping.PersistentClass)4 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 Iterator (java.util.Iterator)2 Identifier (org.hibernate.boot.model.naming.Identifier)2 ForeignKey (org.hibernate.mapping.ForeignKey)2 Property (org.hibernate.mapping.Property)2 List (java.util.List)1 AnnotationException (org.hibernate.AnnotationException)1 DuplicateMappingException (org.hibernate.DuplicateMappingException)1 MappingException (org.hibernate.MappingException)1 ImplicitIndexNameSource (org.hibernate.boot.model.naming.ImplicitIndexNameSource)1 ImplicitUniqueKeyNameSource (org.hibernate.boot.model.naming.ImplicitUniqueKeyNameSource)1 AuxiliaryDatabaseObject (org.hibernate.boot.model.relational.AuxiliaryDatabaseObject)1 Database (org.hibernate.boot.model.relational.Database)1