All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jpattern.orm.query.IJoin Maven / Gradle / Ivy

There is a newer version: 3.5.1
Show newest version
package com.jpattern.orm.query;

/**
 * 
 * @author Francesco Cina
 *
 * 18/giu/2011
 */
public interface IJoin extends INameSolverConsumer, IRenderableSqlObject {
	
	/**
	 * Perform a cross Join. 
	 * CROSS JOIN returns the Cartesian product of rows from tables in the join.
	 * A cross join is the join commonly used when more tables are comma 
	 * separated in a from clause.
	 * The name of the class will be used as alias.
	 * @return
	 */
	IJoin cross(Class joinClass);

	/**
	 * Perform a cross Join.
	 * CROSS JOIN returns the Cartesian product of rows from tables in the join.
	 * A cross join is the join commonly used when more tables are comma 
	 * separated in a from clause.
	 * @return
	 */
	IJoin cross(Class joinClass, String joinClassAlias);
	
	/**
	 * Perform a natural Join. 
	 * The join predicate arises implicitly by comparing all columns in both tables that have the same column-names in the joined tables. The resulting joined table contains only one column for each pair of equally-named columns.
	 * The name of the class will be used as alias.
	 * @return
	 */
	IJoin natural(Class joinClass);

	/**
	 * Perform a natural Join.
	 * The join predicate arises implicitly by comparing all columns in both tables that have the same column-names in the joined tables. The resulting joined table contains only one column for each pair of equally-named columns..
	 * @return
	 */
	IJoin natural(Class joinClass, String joinClassAlias);

	/**
	 * Perform a inner Join.
	 * An inner join can be performed in a normal sql query simply using the key JOIN.
	 * @return
	 */
	IJoin inner(Class joinClass);

	/**
	 * Perform a inner Join.
	 * An inner join can be performed in a normal sql simply using the key JOIN.
	 * @return
	 */
	IJoin inner(Class joinClass, String joinClassAlias);
	
	/**
	 * Perform a inner Join.
	 * An inner join can be performed in a normal sql query simply using the key JOIN.
	 * @return
	 */
	IJoin inner(Class joinClass, String onLeftProperty, String onRigthProperty);

	/**
	 * Perform a inner Join.
	 * An inner join can be performed in a normal sql simply using the key JOIN.
	 * @return
	 */
	IJoin inner(Class joinClass, String joinClassAlias, String onLeftProperty, String onRigthProperty);
	
	/**
	 * Perform a natural left outer Join.
	 * The name of the class will be used as alias.
	 * @return
	 */
	IJoin leftOuter(Class joinClass);

	/**
	 * Perform a natural left outer Join.
	 * @return
	 */
	IJoin leftOuter(Class joinClass, String joinClassAlias);
	
	/**
	 * Perform a left outer Join.
	 * @return
	 */
	IJoin leftOuter(Class joinClass, String onLeftProperty, String onRigthProperty);

	/**
	 * Perform left outer Join.
	 * @return
	 */
	IJoin leftOuter(Class joinClass, String joinClassAlias, String onLeftProperty, String onRigthProperty);
	
	/**
	 * Perform a natural right outer Join.
	 * The name of the class will be used as alias.
	 * @return
	 */
	IJoin rightOuter(Class joinClass);

	/**
	 * Perform a natural right outer Join.
	 * @return
	 */
	IJoin rightOuter(Class joinClass, String joinClassAlias);
	
	/**
	 * Perform a right outer Join.
	 * @return
	 */
	IJoin rightOuter(Class joinClass, String onLeftProperty, String onRigthProperty);

	/**
	 * Perform right outer Join.
	 * @return
	 */
	IJoin rightOuter(Class joinClass, String joinClassAlias, String onLeftProperty, String onRigthProperty);
	
	/**
	 * Perform a natural full outer Join.
	 * The name of the class will be used as alias.
	 * @return
	 */
	IJoin fullOuter(Class joinClass);

	/**
	 * Perform a natural full outer Join.
	 * @return
	 */
	IJoin fullOuter(Class joinClass, String joinClassAlias);
	
	/**
	 * Perform a full outer Join.
	 * @return
	 */
	IJoin fullOuter(Class joinClass, String onLeftProperty, String onRigthProperty);

	/**
	 * Perform full outer Join.
	 * @return
	 */
	IJoin fullOuter(Class joinClass, String joinClassAlias, String onLeftProperty, String onRigthProperty);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy