use of org.hibernate.sql.Insert in project hibernate-orm by hibernate.
the class BasicCollectionPersister method generateInsertRowString.
/**
* Generate the SQL INSERT that creates a new row
*/
@Override
protected String generateInsertRowString() {
final Insert insert = new Insert(getDialect()).setTableName(qualifiedTableName).addColumns(keyColumnNames);
if (hasIdentifier) {
insert.addColumn(identifierColumnName);
}
if (hasIndex) /*&& !indexIsFormula*/
{
insert.addColumns(indexColumnNames, indexColumnIsSettable);
}
if (getFactory().getSessionFactoryOptions().isCommentsEnabled()) {
insert.setComment("insert collection row " + getRole());
}
//if ( !elementIsFormula ) {
insert.addColumns(elementColumnNames, elementColumnIsSettable, elementColumnWriters);
return insert.toStatementString();
}
use of org.hibernate.sql.Insert in project hibernate-orm by hibernate.
the class AbstractEntityPersister method generateIdentityInsertString.
/**
* Used to generate an insery statement against the root table in the
* case of identifier generation strategies where the insert statement
* executions actually generates the identifier value.
*
* @param includeProperty indices of the properties to include in the
* insert statement.
*
* @return The insert SQL statement string
*/
protected String generateIdentityInsertString(boolean[] includeProperty) {
Insert insert = identityDelegate.prepareIdentifierGeneratingInsert();
insert.setTableName(getTableName(0));
// add normal properties except lobs
for (int i = 0; i < entityMetamodel.getPropertySpan(); i++) {
if (includeProperty[i] && isPropertyOfTable(i, 0) && !lobProperties.contains(i)) {
// this property belongs on the table and is to be inserted
insert.addColumns(getPropertyColumnNames(i), propertyColumnInsertable[i], propertyColumnWriters[i]);
}
}
// and updates. Insert them at the end.
for (int i : lobProperties) {
if (includeProperty[i] && isPropertyOfTable(i, 0)) {
insert.addColumns(getPropertyColumnNames(i), propertyColumnInsertable[i], propertyColumnWriters[i]);
}
}
// add the discriminator
addDiscriminatorToInsert(insert);
if (getFactory().getSessionFactoryOptions().isCommentsEnabled()) {
insert.setComment("insert " + getEntityName());
}
return insert.toStatementString();
}
use of org.hibernate.sql.Insert in project hibernate-orm by hibernate.
the class AbstractEntityPersister method generateInsertString.
/**
* Generate the SQL that inserts a row
*/
protected String generateInsertString(boolean identityInsert, boolean[] includeProperty, int j) {
// todo : remove the identityInsert param and variations;
// identity-insert strings are now generated from generateIdentityInsertString()
Insert insert = new Insert(getFactory().getDialect()).setTableName(getTableName(j));
// add normal properties
for (int i = 0; i < entityMetamodel.getPropertySpan(); i++) {
// values
if (isPropertyOfTable(i, j)) {
if (!lobProperties.contains(i)) {
final InDatabaseValueGenerationStrategy generationStrategy = entityMetamodel.getInDatabaseValueGenerationStrategies()[i];
if (generationStrategy != null && generationStrategy.getGenerationTiming().includesInsert()) {
if (generationStrategy.referenceColumnsInSql()) {
final String[] values;
if (generationStrategy.getReferencedColumnValues() == null) {
values = propertyColumnWriters[i];
} else {
final int numberOfColumns = propertyColumnWriters[i].length;
values = new String[numberOfColumns];
for (int x = 0; x < numberOfColumns; x++) {
if (generationStrategy.getReferencedColumnValues()[x] != null) {
values[x] = generationStrategy.getReferencedColumnValues()[x];
} else {
values[x] = propertyColumnWriters[i][x];
}
}
}
insert.addColumns(getPropertyColumnNames(i), propertyColumnInsertable[i], values);
}
} else if (includeProperty[i]) {
insert.addColumns(getPropertyColumnNames(i), propertyColumnInsertable[i], propertyColumnWriters[i]);
}
}
}
}
// add the discriminator
if (j == 0) {
addDiscriminatorToInsert(insert);
}
// add the primary key
if (j == 0 && identityInsert) {
insert.addIdentityColumn(getKeyColumns(0)[0]);
} else {
insert.addColumns(getKeyColumns(j));
}
if (getFactory().getSessionFactoryOptions().isCommentsEnabled()) {
insert.setComment("insert " + getEntityName());
}
// and updates. Insert them at the end.
for (int i : lobProperties) {
if (includeProperty[i] && isPropertyOfTable(i, j)) {
// this property belongs on the table and is to be inserted
insert.addColumns(getPropertyColumnNames(i), propertyColumnInsertable[i], propertyColumnWriters[i]);
}
}
String result = insert.toStatementString();
// append the SQL to return the generated identifier
if (j == 0 && identityInsert && useInsertSelectIdentity()) {
//TODO: suck into Insert
result = getFactory().getDialect().getIdentityColumnSupport().appendIdentitySelectToInsert(result);
}
return result;
}
Aggregations