List of usage examples for org.hibernate.persister.collection AbstractCollectionPersister isManyToMany
@Override public abstract boolean isManyToMany();
From source file:net.digitalprimates.persistence.translators.hibernate.HibernateSerializer.java
License:Open Source License
/** * Query the database and get a result set of IDS that belong to a specific * collection/*from w w w.ja va 2s .c o m*/ * * @return */ private List getPkIds(SessionImplementor session, CollectionPersister persister, PersistentCollection collection) throws ClassNotFoundException { AbstractCollectionPersister absPersister = (AbstractCollectionPersister) persister; String[] keyNames; if (absPersister.isOneToMany() || absPersister.isManyToMany()) { keyNames = absPersister.getElementColumnNames(); } else { keyNames = absPersister.getKeyColumnNames(); } //String[] columnNames = absPersister.getElementColumnNames(); SimpleSelect pkSelect = new SimpleSelect(((SessionImpl) session).getFactory().getDialect()); pkSelect.setTableName(absPersister.getTableName()); pkSelect.addColumns(keyNames); pkSelect.addCondition(absPersister.getKeyColumnNames(), "=?"); String sql = pkSelect.toStatementString(); List results = new ArrayList(); try { // int size = absPersister.getSize(collection.getKey(), eventSession); Query q2 = ((SessionImpl) session).createSQLQuery(sql).setParameter(0, collection.getKey()) .setResultTransformer(new PassThroughResultTransformer()); List hibernateResults = q2.list(); //return results; Type t = persister.getKeyType(); PreparedStatement stmt = ((SessionImpl) session).connection().prepareStatement(sql); if (t instanceof StringType) { stmt.setString(1, collection.getKey().toString()); } else { stmt.setObject(1, new Integer(collection.getKey().toString()).intValue()); } ResultSet keyResults = stmt.executeQuery(); while (keyResults.next()) { results.add(keyResults.getObject(1)); } } catch (Exception ex) { ex.printStackTrace(); } return results; }