package org.springframework.samples.petclinic.toplink;
import java.io.IOException;
import java.io.Writer;
import oracle.toplink.essentials.exceptions.ValidationException;
import oracle.toplink.essentials.platform.database.HSQLPlatform;
import oracle.toplink.essentials.queryframework.ValueReadQuery;
/**
* Subclass of the TopLink Essentials default HSQLPlatform class, using native
* HSQLDB identity columns for id generation.
*
* <p>Necessary for PetClinic's default data model, which relies on identity
* columns: this is uniformly used across all persistence layer implementations
* (JDBC, Hibernate, and JPA).
*
* @author Juergen Hoeller
* @author <a href="mailto:james.x.clark@oracle.com">James Clark</a>
* @since 1.2
*/
public class EssentialsHSQLPlatformWithNativeSequence extends HSQLPlatform {
private static final long serialVersionUID = -55658009691346735L;
public EssentialsHSQLPlatformWithNativeSequence() {
// setUsesNativeSequencing(true);
}
public boolean supportsNativeSequenceNumbers() {
return true;
}
public boolean shouldNativeSequenceAcquireValueAfterInsert() {
return true;
}
public ValueReadQuery buildSelectQueryForNativeSequence() {
return new ValueReadQuery("CALL IDENTITY()");
}
public void printFieldIdentityClause(Writer writer) throws ValidationException {
try {
writer.write(" IDENTITY");
}
catch (IOException ex) {
throw ValidationException.fileError(ex);
}
}
}