List of usage examples for org.hibernate.mapping PersistentClass getVersion
public abstract Property getVersion();
From source file:fr.keyconsulting.oliphant.postgresql.PostgreSQLListenerAuxiliary.java
License:Open Source License
public String sqlCreateString(Dialect dialect, Mapping mapping, String defaultCatalog, String defaultSchema) { StringBuilder sb = new StringBuilder(); for (Iterator i = config.getClassMappings(); i.hasNext();) { PersistentClass c = (PersistentClass) i.next(); Table table = c.getTable();/*from ww w .j a va2s . c om*/ if (table.getPrimaryKey().getColumnSpan() > 1) { throw new HibernateException( "Oliphant does not support primary keys that span multiple columns. Objects of class " + c.getClassName() + " will not be monitored for changes."); } String tableName = table.getName().toLowerCase(); String idColName = table.getPrimaryKey().getColumn(0).getName(); Iterator verCols = c.getVersion().getColumnIterator(); if (!verCols.hasNext()) { throw new HibernateException( "Oliphant does not support version properties that span multiple columns. Objects of class " + c.getClassName() + " will not be monitored for changes."); } Column verCol = (Column) verCols.next(); String verColName = verCol.getName(); if (verCols.hasNext()) { throw new HibernateException("Oliphant does not support non versioned entities. Objects of class " + c.getClassName() + " will not be monitored for changes."); } sb.append("CREATE OR REPLACE FUNCTION oliphant_" + tableName + "() RETURNS TRIGGER AS $$\n"); sb.append(" DECLARE\n"); sb.append(" VERSION TEXT;\n"); sb.append(" BEGIN\n"); sb.append(" IF TG_OP = 'UPDATE' THEN\n"); sb.append(" VERSION := NEW." + verColName + ";\n"); sb.append(" ELSIF TG_OP = 'DELETE' THEN\n"); sb.append(" VERSION := -1;\n"); sb.append(" END IF;\n"); sb.append(" PERFORM send_notify('oliphant', '" + tableName + "#' || encode(text(OLD." + idColName + ")::bytea,'base64') || '###' || encode(text(VERSION)::bytea,'base64')); RETURN NULL;\n"); sb.append(" END;\n"); sb.append("$$ LANGUAGE 'plpgsql';\n"); sb.append("\n"); sb.append("CREATE TRIGGER oliphant_" + tableName + "_trg\n"); sb.append(" AFTER DELETE OR UPDATE ON " + tableName + "\n"); sb.append(" FOR EACH ROW EXECUTE PROCEDURE oliphant_" + tableName + "();\n"); sb.append("\n"); } return sb.toString(); }
From source file:fr.keyconsulting.oliphant.postgresql.PostgreSQLListenerAuxiliary.java
License:Open Source License
public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { StringBuilder sb = new StringBuilder(); for (Iterator i = config.getClassMappings(); i.hasNext();) { PersistentClass c = (PersistentClass) i.next(); Table table = c.getTable();/*from w w w . j a v a 2 s . c o m*/ if ((table.getPrimaryKey().getColumnSpan() == 1) && (c.getVersion().getColumnSpan() == 1)) { String tableName = table.getName().toLowerCase(); sb.append("DROP FUNCTION oliphant_" + tableName + "()\n"); sb.append("\n"); } } return sb.toString(); }
From source file:org.infinispan.test.hibernate.cache.commons.functional.AbstractFunctionalTest.java
License:LGPL
@Override protected void afterMetadataBuilt(Metadata metadata) { if (addVersions) { for (PersistentClass clazz : metadata.getEntityBindings()) { if (clazz.getVersion() != null) { continue; }/*from ww w . j a v a2s . c om*/ try { clazz.getMappedClass().getMethod("getVersion"); clazz.getMappedClass().getMethod("setVersion", long.class); } catch (NoSuchMethodException e) { continue; } RootClass rootClazz = clazz.getRootClass(); Property versionProperty = new Property(); versionProperty.setName("version"); SimpleValue value = new SimpleValue((MetadataImplementor) metadata, rootClazz.getTable()); value.setTypeName("long"); Column column = new Column(); column.setValue(value); column.setName("version"); value.addColumn(column); rootClazz.getTable().addColumn(column); versionProperty.setValue(value); rootClazz.setVersion(versionProperty); rootClazz.addProperty(versionProperty); } } }
From source file:org.wicketopia.persistence.hibernate.decorator.HibernatePropertyDecorator.java
License:Apache License
public void decorate(PropertyMetaData propertyMetaData) { WicketopiaPropertyFacet facet = WicketopiaPropertyFacet.get(propertyMetaData); final PersistentClass classMapping = findClassMapping(propertyMetaData.getBeanMetaData()); if (classMapping != null) { final Property property = classMapping.getProperty(propertyMetaData.getPropertyDescriptor().getName()); if (property == null) { return; } else if (!(property.getValue() instanceof SimpleValue)) { facet.setIgnored(true);/*from w ww.jav a 2 s . c om*/ } else if (ignoreIdentifiers && property.equals(classMapping.getIdentifierProperty())) { facet.setIgnored(true); } else if (property.equals(classMapping.getVersion())) { facet.setIgnored(true); } if (!property.isOptional()) { facet.setRequired(Context.ALL_CONTEXTS, true); } } }