JoinTableAssociation(JoinTable table) { this.table = table; this.columns = new LinkedHashSet<>(); for (JoinColumn column : table.joinColumns()) { String columnName = column.name(); ForeignKey foreignKey = column.foreignKey(); ReferentialAction action = mapConstraint(foreignKey.value()); columns.add(new AssociativeReference(columnName, null, null, action, action)); } for (JoinColumn column : table.inverseJoinColumns()) { String columnName = column.name(); ForeignKey foreignKey = column.foreignKey(); ReferentialAction action = mapConstraint(foreignKey.value()); columns.add(new AssociativeReference(columnName, null, null, action, action)); } }
@Test public void testJoinTableNoChildren() throws Exception { reader = getReader( Entity2.class, "field1", "many-to-many.orm16.xml" ); assertAnnotationPresent( ManyToMany.class ); assertAnnotationPresent( JoinTable.class ); assertAnnotationNotPresent( JoinColumns.class ); assertAnnotationNotPresent( JoinColumn.class ); JoinTable joinTableAnno = reader.getAnnotation( JoinTable.class ); assertEquals( "", joinTableAnno.catalog() ); assertEquals( "", joinTableAnno.name() ); assertEquals( "", joinTableAnno.schema() ); assertEquals( 0, joinTableAnno.joinColumns().length ); assertEquals( 0, joinTableAnno.inverseJoinColumns().length ); assertEquals( 0, joinTableAnno.uniqueConstraints().length ); }
.toIdentifier( joinTable.name() ) ); joinColumns = joinTable.joinColumns(); uniqueConstraintHolders = TableBinder.buildUniqueConstraintHolders( joinTable.uniqueConstraints() );
@Test public void testJoinTableNoChildren() throws Exception { reader = getReader( Entity1.class, "field1", "many-to-one.orm4.xml" ); assertAnnotationPresent( ManyToOne.class ); assertAnnotationNotPresent( JoinColumn.class ); assertAnnotationNotPresent( JoinColumns.class ); assertAnnotationPresent( JoinTable.class ); JoinTable joinTableAnno = reader.getAnnotation( JoinTable.class ); assertEquals( "", joinTableAnno.catalog() ); assertEquals( "", joinTableAnno.name() ); assertEquals( "", joinTableAnno.schema() ); assertEquals( 0, joinTableAnno.joinColumns().length ); assertEquals( 0, joinTableAnno.inverseJoinColumns().length ); assertEquals( 0, joinTableAnno.uniqueConstraints().length ); }
ad.setValue( "catalog", table.catalog() ); ad.setValue( "uniqueConstraints", table.uniqueConstraints() ); ad.setValue( "joinColumns", table.joinColumns() ); ad.setValue( "inverseJoinColumns", table.inverseJoinColumns() );
tableName = assocTable.name(); uniqueConstraints = assocTable.uniqueConstraints(); joins = assocTable.joinColumns(); inverseJoins = assocTable.inverseJoinColumns(); jpaIndexes = assocTable.indexes();
String foreignKeyDefinition = joinTableAnn.foreignKey().foreignKeyDefinition(); ConstraintMode foreignKeyValue = joinTableAnn.foreignKey().value(); if ( joinTableAnn.joinColumns().length != 0 ) { final JoinColumn joinColumnAnn = joinTableAnn.joinColumns()[0]; if ( "".equals( foreignKeyName ) ) { foreignKeyName = joinColumnAnn.foreignKey().name();
/** * Instantiates a new join table metadata. * * @param relationField * the relation field */ public JoinTableMetadata(Field relationField) { JoinTable jtAnn = relationField.getAnnotation(JoinTable.class); setJoinTableName(jtAnn.name()); setJoinTableSchema(jtAnn.schema()); for (JoinColumn joinColumn : jtAnn.joinColumns()) { addJoinColumns(joinColumn.name()); } for (JoinColumn inverseJoinColumn : jtAnn.inverseJoinColumns()) { addInverseJoinColumns(inverseJoinColumn.name()); } }
/** * Define the joins for a ManyToMany relationship. * <p> * This includes joins to the intersection table and from the intersection table * to the other side of the ManyToMany. * </p> */ private void readJoinTable(JoinTable joinTable, DeployBeanPropertyAssocMany<?> prop) { String intTableName = getFullTableName(joinTable); if (intTableName.isEmpty()) { BeanTable localTable = factory.getBeanTable(descriptor.getBeanType()); BeanTable otherTable = factory.getBeanTable(prop.getTargetType()); intTableName = getM2MJoinTableName(localTable, otherTable); } // set the intersection table DeployTableJoin intJoin = new DeployTableJoin(); intJoin.setTable(intTableName); // add the source to intersection join columns intJoin.addJoinColumn(true, joinTable.joinColumns(), prop.getBeanTable()); // set the intersection to dest table join columns DeployTableJoin destJoin = prop.getTableJoin(); destJoin.addJoinColumn(false, joinTable.inverseJoinColumns(), prop.getBeanTable()); intJoin.setType(SqlJoinType.OUTER); // reverse join from dest back to intersection DeployTableJoin inverseDest = destJoin.createInverse(intTableName); prop.setIntersectionJoin(intJoin); prop.setInverseJoin(inverseDest); }
JoinColumn[] joinColumns = joinTableAnno.joinColumns(); assertEquals( 2, joinColumns.length ); assertEquals( "", joinColumns[0].name() );
catalog = joinTable.catalog(); secondaryTableNameContext = new SecondaryTableNameSource( joinTable.name() ); joinColumns = joinTable.joinColumns(); uniqueConstraintHolders = TableBinder.buildUniqueConstraintHolders( joinTable.uniqueConstraints() );
JoinColumn[] joinColumns = joinTableAnno.joinColumns(); assertEquals( 2, joinColumns.length ); assertEquals( "", joinColumns[0].name() );
JoinColumn[] joinColumns = joinTableAnno.joinColumns(); assertEquals( 2, joinColumns.length ); assertEquals( "", joinColumns[0].name() );
ad.setValue( "catalog", table.catalog() ); ad.setValue( "uniqueConstraints", table.uniqueConstraints() ); ad.setValue( "joinColumns", table.joinColumns() ); ad.setValue( "inverseJoinColumns", table.inverseJoinColumns() );
tableName = assocTable.name(); uniqueConstraints = assocTable.uniqueConstraints(); joins = assocTable.joinColumns(); inverseJoins = assocTable.inverseJoinColumns();
for (JoinColumn joinColumn : joinTable.joinColumns()) { if (beanTable == null) { throw new IllegalStateException("Looks like a missing @ManyToOne or @OneToOne on property " + prop.getFullBeanName()+" - no related 'BeanTable'");
/** * Parse @JoinTable. */ private void parseJoinTable(FieldMapping fm, JoinTable join) { fm.getMappingInfo().setTableName(toTableName(join.schema(), join.name())); parseJoinColumns(fm, fm.getMappingInfo(), false, join.joinColumns()); parseJoinColumns(fm, fm.getElementMapping().getValueInfo(), false, join.inverseJoinColumns()); }
/** * Parse @JoinTable. */ private void parseJoinTable(FieldMapping fm, JoinTable join) { FieldMappingInfo info = fm.getMappingInfo(); DBIdentifier joinTbl = toTableIdentifier(join.schema(), join.name()); info.setTableIdentifier(joinTbl); parseJoinColumns(fm, info, false, join.joinColumns()); parseJoinColumns(fm, fm.getElementMapping().getValueInfo(), false, join.inverseJoinColumns()); addUniqueConstraints(info.getTableIdentifier().getName(), fm, info, join.uniqueConstraints()); }
/** * Parse @JoinTable. */ private void parseJoinTable(FieldMapping fm, JoinTable join) { FieldMappingInfo info = fm.getMappingInfo(); DBIdentifier joinTbl = toTableIdentifier(join.schema(), join.name()); info.setTableIdentifier(joinTbl); parseJoinColumns(fm, info, false, join.joinColumns()); parseJoinColumns(fm, fm.getElementMapping().getValueInfo(), false, join.inverseJoinColumns()); addUniqueConstraints(info.getTableIdentifier().getName(), fm, info, join.uniqueConstraints()); }
/** * Parse @JoinTable. */ private void parseJoinTable(FieldMapping fm, JoinTable join) { FieldMappingInfo info = fm.getMappingInfo(); DBIdentifier joinTbl = toTableIdentifier(join.schema(), join.name()); info.setTableIdentifier(joinTbl); parseJoinColumns(fm, info, false, join.joinColumns()); parseJoinColumns(fm, fm.getElementMapping().getValueInfo(), false, join.inverseJoinColumns()); addUniqueConstraints(info.getTableIdentifier().getName(), fm, info, join.uniqueConstraints()); }