6.1: 12/20/2021 * ALL: Bumped the optional dependency to log4j2 to version 2.17.0. No direct references to log4j2 code in ormlite. 6.0: 12/18/2021 * ALL: Added support for Java 7. Dropped support for Java 6. * ALL: Migrated to supporting AutoCloseable. Most close() methods now throw Exception not IOException. * CORE: Removed some @Deprecated methods that had been with us for a while. * CORE: Added closeable-spliterator for better handing of JDK8+ streams. Thanks to zhemaituk. * CORE: Add Dao.queryForFirst() convenience method. * JDBC: ormlite-jdbc jar now includes the -core classes. No need to import ormlite-core jar anymore. * JDBC: Fixed exceptions in some JDBC drivers when working with chars. Thanks to Bo98. * JDBC: Fixed support for creating index IF NOT EXISTS in MariaDb. Thanks to BluemediaGER. * JDBC: Fixed boolean char type handling in Derby. * ANDROID: ormlite-android jar now includes the -core classes. No need to import ormlite-core jar anymore. 5.7: 11/7/2021 * CORE: Fixed possible thread issue around field-name lookups. Thanks to dlew. * CORE: Fixed a number of flaky tests based on field order. Thanks CharlesZKQ, NanaOkada, hwang-pku, and chimo173. * CORE: Upgraded SimpleLogging code to fix annoying startup messages. Thanks to JayDi85. * CORE: Removed broken getCreateTableStatements(DatabaseType, ...). ConnectionSource needed. Thanks to blacatena. * CORE: Added WrappedConnectionSource and other support classes for tracing unclosed connections and statements. * CORE: Added better support for JDK8+ streams with lazy foreign collections. Thanks to zhemaituk. * ANDROID: Fixed bug in number rows affected with executeUpdateDelete() in newer API versions. Thanks to WonShaw. 5.6: 6/22/2021 * CORE: Added support for @Entity storing of Serializable types. Thanks to arn-cpu. * CORE: Fixed a bug with nonreentrant handling of DateFormat with the string date types. Thanks to Bob Lacatena. * ANDROID: Removed the reflection hack support for pre-ice-cream-sandwich annotation performance. 5.5: 5/23/2021 * CORE: Added support for java.util.Currency. Thanks to juur. * ANDROID: Fixed bug in AndroidLogBackend. Thanks to sanderderks. 5.4: 5/18/2021 * CORE: Added LoggerFactory.setLogFactory() for supporting other log implementations and added NullLog. * CORE: Migrated the internal logging code to SimpleLogging. * CORE: Updated H2 version which shook lose a couple of issues in tests and core support. * CORE: Added UPDATE and DELETE database-dependent support for TOP and LIMIT. Thanks to juur. * JDBC: Fixed NPE in JdbcSingleConnectionSource because of early initialization. Thanks to Nexxxt99. * JDBC: Fixed problem in Postgresql where mixed case sequence names aren't handled right. Thanks to Nick. * JDBC: Added database dependent login-timeout seconds setting to the JdbcConnectionSource. 5.3: 12/8/2020 * CORE: More improvements to the TransactionManager connection and savepoint handling. * CORE: Added a getInternalConnection() method to DatabaseConnection to access underlying objects. * CORE: Added support for ORDER BY ... NULLS FIRST and LAST. May not be supported by all database types. * CORE: Added optimization to AND and OR queries to reduce the parens in the generated query. Thanks to devjta. * CORE: Removed some extraneous spaces from generated queries. * CORE: Added missing wiring for the TIME_STAMP_STRING data type for storing Timestamp type as a string. * CORE: Added support for OneToMany JPA annotation. Thanks to Bo98. * JDBC: Update the DB2 driver class. Thanks to mauro-palumbo. * JDBC: Added support for create table if not exists for HSQLDB versions 2.3.X and greater. Thanks to lukewhitt. * JDBC: Fixed a problem with H2's handling of boolean fields. * JDBC: Fixed the log4j logger classes broken in 5.2. Also moved them over to core. Thanks to MarcMil. 5.2: 11/14/2020 * JDBC: Refactored the JDBC package to make it java9 compliant by moving all classes under jdbc subpackage. * CORE: Added support for @DatabaseField(readOnly) boolean for returning non-column fields. * CORE: Added @DatabaseField(fullColumnDefinition) for fully describing a column as opposed to columnDefinition. * CORE: Added BaseSchemaUtil to print out the schema statements necessary to create a table. * CORE: Added the ability for users to set a character set for byte array type. Thanks to noordawod. * CORE: Added a Logger.setGlobalLogLevel(...) method to set a global filter on all log messages. * CORE: Moved from RETURN_GENERATED_KEYS to named columns for generated ids to be more compatible. Thanks to Bo98. * CORE: Significant refactoring to make FieldType and TableInfo not depend on Dao or ConnectionSource. * CORE: Improved memory usage by unregistering DAOs associated to a connection source. Thanks to bosborn. * CORE: Fixed problem with null field assignment causing a NPE in the resulting message. Thanks to hrach. * CORE: Fixed problems with the transaction level thread-local not being handled right. Thanks to Bo98. * CORE: Fixed @DatabaseField(fullColumnDefinition) which was completely broken. Thanks to ethanmdavidson. * CORE: Fixed default width not being applied for BigInteger. Thanks to Bo98. * CORE: Fixed the default mysql driver and made driver loading more forgiving. Thanks to zanella. * CORE: Fixed a couple of incorrect SqlTypes in field converters. Thanks to Bo98. * CORE: Support schema name qualifiers for tables. Thanks to Fedor Bobin. * CORE: Fixed concurrency issues when using iterators. Thanks to MarcMil. 5.1: 2/19/2018 * CORE: Added synchronized keyword to BaseDaoImpl.createOrUpdate() and createIfNotExists(). * CORE: Added integer date support. Thanks to noordawod. * CORE: Added support for CloseableIterator.moveAbsolute(...). Thanks to renaudcerrato. * CORE: Fixed but with get table name not using TableInfo. Thanks to 0xabadea. * CORE: Fixed handling of field capitalization which was screwing up Turkish fields. Thanks to folkyatina. * CORE: Fixed handling of joined queries with orders and group by's. Thanks much to p91paul. * CORE: Fixed bad bug with committing of inner transactions inappropriately. Thanks much to maroux. * CORE: Normalized all of the up/down case usage to the DatabaseType so it can be overridden. * JDBC: Fixed problem with UUID native type not using the correct persister. Thanks to Bo98. * ANDROID: Added field sorting for more deterministic config file output. Thanks to jibidus. 5.0: 6/27/2016 * ALL: ORMLite has dropped support for Java 5. Java 6 is now required. * ALL: Added boolean argument to DatabaseConnection.compileStatement(...) to fix a cache bug. * ALL: Changed DatabaseResults.getObjectCache() to be getObjectCacheForRetrieve() and getObjectCacheForStore(). * CORE: Added JOIN-ing between tables _without_ a foreign-object relationship. * CORE: Added TimeStampStringType to support Android timestamps. * CORE: Added the ability to override the DataPersister as well as the FieldConverter. * CORE: Added support for the @Table entity from javax.persistence annotations. Thanks to wener. Bug #174. * CORE: Added used of java.io.Closeable to support CloseableIterator and other Java7 support. Thanks to livelazily. * CORE: Added Dao.create(Collection) method for bulk creation. Thanks to Farrukh Najmi for the good idea. * CORE: Added DataType.BOOLEAN_CHAR (to support '1' '0' or 't' 'f') and BOOLEAN_INTEGER. Thanks to stew. * CORE: Added support for QueryBuilder.countOf("DISTINCT(field)"). Thanks to spacetime. * CORE: Added support for Java 8 methods. Thanks to VincentFTS. * CORE: Added support for Joda DateTime to be able to be a version field. Thanks much to outofrange. * CORE: Added support for raw queries using the DatabaseResults in the mapper. Thanks much to nonameplum. * CORE: Added support for ENUM_TO_STRING type which persists Enum.toString() instead of name(). Thanks jiajia-li. * CORE: Added support for BigInteger to be an ID and version field by saving as string. Thanks noordawod. * CORE: Added support for BYTE_ARRAY and STRING_BYTE_ARRAY data type for ids and default values. Thanks noordawod. * CORE: Added support for table aliasing. Thanks much to p91paul. * CORE: Added table-name for many ConnectionSource methods to allow partitioning and other per-table operations. * CORE: Added better support for per-database type object custom persisters. Thanks to rzorzorzo. * CORE: Fixed (really) QueryBuilder.orderByRaw(...), orderBy(...) mutually exclusivity. Thanks to Diederik. Bug #161. * CORE: Fixed a bug when we select columns on an entity without an id field. Thanks to lder. * CORE: Fixed a bug with building queries using selectRaw(...). Bug #166. * CORE: Fixed the javax.persistence annotation processing and revamped it to use the annotations directly. * CORE: Fixed bug with UpdateBuilder methods returning wrong type. Thanks to Joseph Jones. Bug #180. * CORE: Fixed bug with the raw results that they are not obeying the AS SQL. Thanks to nonameplum. Bug #183. * CORE: Fixed bug with ISNULL and ISNOTNULL which weren't working with serializable. Thanks to andrew8er. Bug #185. * CORE: Fixed bug with dao.update() not setting dao on BaseDaoEnabled instances. Thanks to Carlos Fonseca. Bug #177. * CORE: Fixed bug where dao.deleteById(...) was not being properly notified. Thanks to Daniel Jette. Bug #190. * CORE: Fixed bug where useGetSet did not understand isXxx() for boolean fields. Thanks to HeDYn. Bug #187. * CORE: Fixed finding of get/set/is methods if not in English locale. Thanks to Christian Ruppert. Bug #191. * CORE: Fixed bug with Doa.createOrUpdate(...) and custom id types. Thanks much to lstrzelecki. Bug #193. * CORE: Fixed some problems with default-value parsing and handing with some complex types. * CORE: Fixed synchronization problems with single connection ConnectionSource and Dao.callBatchTasks(). Bug #195. * CORE: Fixed bad bug where max-auto-refresh value enabled auto-refresh when programmatically configured. Bug #196. * CORE: Fixed bug where unknown enum name was not working with anonymous enum types. Thanks to jahd2602. Bug #197. * CORE: Fixed a bug where the logger did not handle an array of primitives correctly. * CORE: Fixed problem with capitalization of entities in non-english locales. ENGLISH now the default. * CORE: Fixed problems with using @DatabaseField(foreignColumnName). Thanks to Knight704. * CORE: Fixed problem with storing partially formed objects in cache because of select arguments. Thanks to pimduin. * CORE: Fixed a bug in DatabaseFieldConfig constructor where it was ignoring DataType param. Thanks to magicgoose. * CORE: Removed deprecated methods: Dao.setAutoCommit(boolean), isAutoCommit() * CORE: Removed deprecated methods: QueryBuilder.clear(), limit(int), offset(int), use long versions of methods * CORE: Removed deprecated methods: ForeignCollectionField.maxEagerForeignCollectionLevel(), foreignColumnName() * CORE: Removed deprecated methods: DatabaseFieldConfig.setMaxEagerForeignCollectionLevel() * CORE: Removed deprecated methods: DatabaseFieldConfig.setForeignCollectionMaxEagerForeignCollectionLevel() * CORE: Removed deprecated methods: DatabaseFieldConfig.setForeignCollectionOrderColumn() * CORE: Removed deprecated methods: DatabaseFieldConfig.setForeignCollectionForeignColumnName() * JDBC: Added support for UUID database fields for Postgres, MSSQL. Use dataType = UUID_NATIVE. Thanks to tsharp. * JDBC: Added support for a JdbcConnectionSource that uses an existing database connection. Thanks to natinusala. * JDBC: Fixed (possibly) some problems with the Oracle type with better boolean support. Thanks to 51mon. * JDBC: Removed deprecated method: DataSourceConnectionSource.setUsesTransactions(boolean). * JDBC: Removed deprecated method: JdbcPooledConnectionSource.setUsesTransactions(boolean). * ANDROID: Added initial take on Loader base classes from EgorAnd for newer Android versions. Thanks much!! * ANDROID: Added better support for Slf4jLoggingLog from JDBC to CORE for Android users. Thanks to tonyxiao. * ANDROID: Fixed the string processing when persisting java.sql.Timestamp and java.sql.Date classes. Bug #163. * ANDROID: Fixed problem with the maxForeignAutoRefreshLevel config setting. Thanks to Eric Fung et al. Bug #194. * ANDROID: Fixed possible problem with queryForFirst() and improper LIMIT implementation. * ANDROID: Removed deprecated methods: OpenHelperManager.release(), AndroidDatabaseResults(Cursor, boolean, ObjectCache). ------------------------------------------------------------------------------------------------------------------------ 4.48: 12/16/2013 * CORE: Added support for tracking direct database connection activity with DatabaseConnectionProxy. * CORE: Fixed problem when inserting no columns to Sqlite (Android), other DBs. Thanks to Michael Weimann. Bug #155. * CORE: Added support for canceling of long running prepared queries. Thanks to Nathan Jones. * CORE: More aggressively remove of some ThreadLocal data. Thanks to Pavel Arnošt. * CORE: Fixed problem with queries similar to and().not().like(...). Thanks to ????. Bug #159. * CORE: Added better use of object cache when hydrating foreign fields. Thanks to Anthony Whitlock. Feature #38. * ANDROID: Added initial API compatibility code for handling multiple API versions. Needed to support canceling. 4.47: 9/8/2013 * CORE: Added support to the QueryBuilder to support joinOr(...) and innerJoinOr(). Default is AND. * CORE: Added support to Dao for another type of queryRaw(...) method that maps results from Object[]. * CORE: Renamed QueryBuilder and Where clear() to be reset() and deprecated the clear() methods. * CORE: Fixed problem where defaultValue = "" was being ignored. Thanks to ManosProm. Bug #152. * CORE: Fixed ForeignCollection.addAll() which was not doing the same thing as add(). Thanks to Igromanru. Bug #153. 4.46: 7/29/2013 * CORE: Added support for raw selects in inner queries. More powerful and flexible. * CORE: Added support for @DatabaseField(readOnly = true) for query only fields. Thanks to Casey. * CORE: Added support for using java.sql.Timestamp fields with @DatabaseField(version = true). * CORE: Added support for QueryBuilder.prepareStatementInfo() to return statement and args. Thanks to SO user. * CORE: Fixed problems with SQLExceptions thrown during transaction rollbacks. Thanks to Miroslav Nadhajský. Bug #148. * CORE: Fixed a stupid bug in the handling of ColumnArgs and Strings (plus others). Thanks to jon. Bug #147. * CORE: Fixed eager-collection clear() which was broken. Thanks to igromanru. Bug #149. * CORE: Fixed eager-collection iterator.remove() which removed every other. Thanks to igromanru. Bug #150. * CORE: Added support for the javax.persistance @Basic annotation. Thanks to Roland Oldenburg. Bug #151. * JDBC: Made some portions of JdbcPooledConnectionSource protected for subclasses. Thanks to Miroslav Nadhajsky. * ANDROID: Fixed possible problem with not closing Cursor in queryForFirst(). Thanks to Guillermo Campelo. Bug #143. 4.45: 3/18/2013 * CORE: Fixed bad bug introduced in 4.43 that broke date-string backwards compatibility. Thanks to Howard Liberty. * ANDROID: Added better exception handling around inner classes. Thanks to Jonathan Caryl. * ANDROID: Fixed bad problem with recursion and OrmLiteConfigUtil. Thanks to Jonathan Caryl. 4.44: 3/13/2013 * CORE: Improved the speed of the version checking under Android. Thanks much to Nick Campion. * ALL: Moved to github.com and to use git for all packages. 4.43: 2/5/2013 (svn r2719) * CORE: WARNING: changed format of date-string which broke backwards compatibility. Use version 4.45+. * CORE: Added QueryBuilder.countOf() and queryRaw() methods as shortcuts to their DAO equivalents. * CORE: Added Where.queryForFirst(), queryRaw(), queryRawFirst(), countOf() methods as shortcut to QueryBuilder. * CORE: Added the ColumnArg feature to compare two columns using QueryBuilder in simple queries and joins. * CORE: Fixed a problem with GROUP BY, ORDER BY, and HAVING order. Bug #134. * CORE: Fixed possible problem with field-type comparison in certain situations. Thanks to shikajiro. Bug #136. * CORE: Added ? arguments to QueryBuilder.orderByRaw(...) method. Thanks a bunch to Nathan Jones. Feature #39. * CORE: Added support for multiple JOIN statements. Thanks to Ramps. Feature #28. * CORE: Added ability to select log-type using "com.j256.ormlite.logger.type" system property. See LoggerFactory. * CORE: Creating an empty foreign collection now mirrors the collection type. "Fixes" bug #124. * CORE: Made the RuntimeExceptionDao implement ClosableIterarble. Feature #34. * CORE: Added Dao.assignEmptyForeignCollection() method to replace the getEmptyForeignCollection(). Feature #31. * JDBC: Improved the log class detection and added support for Slf4j nad Log4j2. Feature #27. * ANDROID: Added protections around missing classes when building class config. Thanks to Bart. Bug #133. * ANDROID: Fixed unclosed Cursor in AndroidDatabaseConnection.isTableExists(). Thanks to Andreas. Bug #137. * ANDROID: Added handling of inner classes that have annotations. Thanks to Ваcилий Казьмин. Feature #35. 4.42: 9/27/2012 (svn r2653) * CORE: Added basic INNER and LEFT JOIN capabilities for queries only. Finally. Work in progress. * CORE: Added ObjectFactory support on the DAO to better support Guice and other wiring. Thanks to glenviewjeff. * CORE: Fixed a bug in comparing superclasses of the field with the field. Thanks to glenviewjeff. Bug #3538777. * CORE: Fixed problems with java.sql.Date and Timestmp persisters. Thanks to Mohammad Moghimi. Bug #3534395. * CORE: Added queryRawValue() method to the DAO for getting a single aggregate result. * CORE: Added last(), moveAbsolute(), and close() methods to DatabaseResults. Thanks to Andrey. * CORE: Added a Dao.getConnectionSource() method to assign with the RuntimeExceptionDao. Thanks to glenviewjeff. * CORE: Added closeQuietly() methods for all close() methods in a number of classes/interfaces. * CORE: Added Dao.executeRawNoArgs() method for executing raw statements with no arguments. Necessary for JDBC fix. * CORE: Added the ability to order your foreign collections ASC or DESC. Thanks to Jaykob. Feature #3571690. * ANDROID: Added support for auto-commit under Android using transactions. Thanks to Chad Schultz. * ANDROID: Added getCount() and getPosition() cursor methods AndroidDatabaseResults. Thanks to Andrey. * JDBC: Fixed some problems with the OracleDatabaseType. Work in progress. Thanks much to Stew. * JDBC: Added OTHER to the SqlType enum for custom persisters. Thanks to Mark Rogers. * JDBC: Added a DatabaseConnection.executeStatement() method which uses Statement.execute() for SQL. Thanks to Stew. * JDBC: Fixed a problem with Oracle where we were asking for column info too early. Thanks to Stew. Bug #3570129. 4.41: 6/6/2012 (svn r2575) * CORE: Added java.sql.Date and java.sql.Timestmp data persister types. java.util.Date is still recommended. * CORE: Added version checking which logs errors if core, jdbc, and android versions do not match. Thanks to nybblr. * CORE: Added a Dao.getRawRowMapper() for mapping result string to an object. * CORE: Added some handling of ForeignCollection with the javax.persistence.* annotations. * CORE: Fixed problem with maxForeignAutoRefreshLevel that made it ~worthless. Thanks to Andrea Sprega. Bug #3530801. * ANDROID: Fixed the updating of serializable and other byte[] fields. Thanks to Yossi Wasserman. Bug #3527685. 4.40: 4/16/2012 (svn r2516) * CORE: Fixed a couple of missing field configuration entries. Thanks to Jeremy Stone. Bug #3518474. * CORE: Fixed a problem that was causing FieldType to always use reflection. Thanks to Jeremy Stone. Bug #3518472. * ANDROID: Big performance bug fix when creating DAOs. Foreign fields always used reflection instead of table configs. 4.39: 4/13/2012 (svn r2485) * CORE: Deprecated @DatabaseField foreignColumnName, renamed to foreignFieldName. Thanks to Candlejack. Bug #3507094. * CORE: Changed dao.callBatchTasks() from throwing Exception to SQLException. Thanks to JC. * CORE: Improved createOrUpdate() to use idExists() instead of expensive method. Thanks to Chris Nevill. Bug #3514164. * CORE: Fixed tough bug with table configs of self referencing classes. Thanks to Slava Tysianchuk. Bug #3517094. * CORE: Added support for start and endThreadConnection() and added dao.commit() and rollBack(). Thanks to AlexPal. * JDBC: Added support for preparedStatement.setQueryTimeout(millis). Thanks to mjomble. Feature #3502803. * JDBC: Fixed bug with pooled connection source and connections with autoCommit off. Thanks to AlexPal. Bug #3517098. * ANDROID: Finally fixed the number of rows changed for insert/delete/update calls using SQLite CHANGES() pragma. * ANDROID: Decided to _not_ fix the columnName case sensitivity issue introduced in 4.37. Thanks to Roman Zimmer. * ANDROID: Fixed bad bug that was prematurely clearing DAO configs. Thanks to Slava Tysianchuk. Bug #3516920. 4.38: 3/23/2012 (svn r2426) * ANDROID: Fixed bad ObjectCache bug deep in Android shutdown/startup logic. Thanks to Filipe Leandro. Bug #3510266. 4.37: 3/21/2012 (svn r2406) * CORE: Fixed blocking bug where object cache exceptions would be thrown. Thanks to Filipe Leandro. Bug #3509853. * CORE: Fixed bug where LocalLog was overwriting log data written to local file. Thanks to mjomble. Bug #3437823. * ANDROID: Fixed a bug with Android API lookup of column names with periods. Thanks to Sebastian Roth. Bug #3509386. 4.36: 3/19/2012 (svn r2389) * CORE: Added support for @DatabaseField(foreignColumnName="name") to map foreign to non-ID. Thanks to Mathias Lin. * CORE: Added update() and refresh() to ForeignCollection which call through to the inner Dao. * CORE: Improved the custom data persister code so it can extend one of the types. Added docs and example. * CORE: Added a Joda DateTime persister which uses reflection. * CORE: Increased synchronization around some code to be proactive about constructor reordering race-conditions. * CORE: Added updateAll(), refreshAll(), refreshCollection() for eager foreign collections. Thanks to Chris Nevill. * CORE: Added logging of exceptions to the RuntimeExceptionDao. Thanks to Kaan. * CORE: Revamped the Logger stuff to remove new Object[] that was happening on each Logger call. Bug #3509015. * JDBC: Fixed a bug in where transactions aren't committed with auto-commit off. Thanks to Tony. Bug #3508746. 4.35: 2/22/2012 (svn r2337) * CORE: Bug where not all queried objects were added to cache. Thanks to Filipe Leandro. Bug #3491418. 4.34: 2/22/2012 (svn r2318) * CORE: Fixed restriction on Long auto-incremented SQLite ids. Thanks to John Kristian. Bug #3474479. * CORE: Added support for sql NOT IN clause to where(). Thanks to Marvin Jomble. Feature #3474550. * CORE: Added support for sql HAVING clause to QueryBuilder. Thanks to Stephen Couchman. Feature #3470923. * CORE: Added updateBuilder.update() and deleteBuilder.delete(). Thanks to Marvin Jomble. Feature #3475613. * CORE: Fixed problem with ForeignCollections when inserting into cache. Thanks to Nick Campion. Bug #3486577. * CORE: Revamped the CloseableIterator to support first, previous, ... moving methods to support more than next. * CORE: Added result-flags to some of the iterator methods to allow forwards/backwards in JDBC. * CORE: Refactored the FieldConverter and BaseDataType stuff a bit to remove some duplicate code. * CORE: Added convenience QueryBuilder.queryForFirst() and queryRawFirst() methods. * CORE: Added setArgumentHolderValue() to the PreparedStmt so we can set an argument on prepared queries directly. * CORE: Removed the @DatabaseFieldSimple and friends annotations that were deprecated in 4.30. * ANDROID: Significantly simplified, improved the internal DAO caching. Thanks to Ben Mosher. Bug #3487674. * ANDROID: Fixed missing exception handling in AndroidConnectionSource. Thanks to Roger Keays. Bug #3474501. * ANDROID: Added isTableExists() support to Dao/AndroidDatabaseConnection. Thanks to Patrick. Feature #3475173. 4.33: 1/12/2012 (svn r2249) * CORE: Fixed a find-bugs result from the eager collection equals method that would always return false. * CORE: Fixed problem with foreign collections and multiple foreign fields. Thanks to André. Bug #3473078. * JDBC: Fixed a problem with SqlServer or JTDS driver returning -1 for some statements. Bug 3463333. 4.32: 1/11/2012 (svn r2229) * CORE: Fixed bad bug where foreign objects cannot have primitive ids. Thanks to Vladimir. Bug #3456339. * CORE: Fixed bug where foreign collections couldn't handle two foreign fields. Thanks to André. Bug #3471320. * CORE: Added support for a BIG_DECIMAL_NUMERIC to support existing NUMERIC database fields. * JDBC: Bug where SQLite class warning is spit out for other databases. Thanks to Kaan. Bug #3472476. * JDBC: Fixed problem with MySQL's creating of index if not exists. Bug #3472782. 4.31: 12/8/2011 (svn r2198) * CORE: Added missing IF NOT EXISTS handling to index creation. Thanks to mjomble. Bug #3437795. * CORE: Fixed problem with hasNext() always moving cursor forward. Thanks to Tom Tantisalidchai. Bug #3449877. * CORE: Fixed bad bug which stopped field being updated with null. Thanks to Javier Hinmel. Bug #3454723. * ANDROID: Added better SQL logging to Android connections. * JDBC: Added better SQL logging to JDBC connections. 4.30: 11/10/2011 (svn r2156) * CORE: Added ability to specify ForeignCollection columns in selectColumns(). Thanks to Timo. Bug #3428751. * CORE: Added two new Dao methods: mapSelectStarRow and getSelectStarRowMapper for easier mapping of results. * CORE: Deprecated the @DatabaseFieldSimple and other smaller annotations that were causing confusion. Sorry. * CORE: Fixed config loader support for foreignAutoCreate and version fields. Thanks to Chase. Bug #3433599. * CORE: Fixed foreignAutoCreate bug where parent object didn't get foreign id. Thanks to Chase. Bug #3434550. * CORE: Added TableInfo.hasColumnName() method. Thanks to JC. Feature #3435754. * CORE: Added Dao.idExists(ID id) to see if row with id exists. Thanks to Craig Andrews. Feature #3300688. * CORE: Moved limit() and offset() to take long parameters to be more consistent. Possible deprecation warnings. * ANDROID: Added some reflection fu to make reading Annotations ~20 times faster. Thanks a ton to Josh Guilfoyle. * ANDROID: Fixed problems with Dao.countOf() method. Thanks to Pedro Velasco. Bug #3434508. * JDBC: Added support for better escaping of "schema"."table" in Postgres. Thanks to Johny Jugianto. 4.29: 10/25/2011 (svn r2101) * ANDROID: Fixed a casting bug in OrmLiteSqliteOpenHelper from 4.28. Thanks to Craig Andrews. Bug #3428429. 4.28: 10/23/2011 (svn r2074) * CORE: Added Dao.countOf(PreparedQuery) and QueryBuilder.setCountOf(true). Thanks to Pedro Velasco. * CORE: Added QueryBuilder.rawColumns(String... columns) to better support aggregates. Thanks to Pedro Velasco. * CORE: Added support for @DatabaseField(version=true) and row version field for numbers and Date's. Cool. * CORE: Fixed a field that was missing transient, making LazyForeignCollection not serializable. Bug #3426884. * ANDROID: Added OrmLiteSqliteOpenHelper.getRuntimeExceptionDao(). Thanks to João Bosco. Feature #3425272. * JDBC: Fixed a spin loop in the JdbcPooledConnectionSource. Thanks to Ali Aksakarya. Bug #3426903. 4.27: 10/11/2011 (svn r2019) * CORE: Added @DatabaseField(foreignAutoCreate=true) for auto-creating foreign fields with blank IDs using the internal DAO. * CORE: Added support for storing BigDecimal and BigInteger fields. Thanks to Pedro Velasco. Feature #3414432. * CORE: Added support for the javax.persistence.Enumerated annotation for setting @Enumerated(ORDINAL) or @Enumerated(STRING). * CORE: Fixed problem with the columnDefinition field handling in @DatabaseFieldOther. Thanks to Flo. Bug #3419779. * CORE: Removed the restriction on classes with just the ID. Update now just returns 0. * ANDROID: Better handling of errors during java auto-detection around the new table configuration code. Thanks to Ming Lin. 4.26: 9/26/2011 (svn r1978) * CORE: Added the first take on a object cache. Thanks to the dev list for suggestions. * CORE: Improved the javax.persistence annotation handling to support @JoinColumn(name="xxx"). Thanks to Andrew Sleeman. * CORE: Added a RuntimeExceptionDao for wrapping Dao operations in RuntimeExceptions. Thanks to the Android list. * CORE: Added a Dao.deleteById() method for removing an instance if you just have the id. * CORE: Added @DatabaseField(columnDefiniton = "...") for hand-defining the field SQL. * CORE: Removed the deprecated RawResults class that was replaced in 4.10. * CORE: Fixed problem with self-generated id fields not being marked as primary. Thanks to Craig Andrews. Bug #3406600. * CORE: Fixed a problem where default was canBeNull=false with javax persistence macros. Thanks to A. Bug #3410640. * CORE: Removed the maxForeignLevel() field from @DatabaseField which was deprecated in 4.22. * CORE: Added table and field configuration file reading and writing. * CORE: Added implements Serializable to the foreign collection objects. Thanks to Mariák Kálmán. Bug #3411227. * CORE: Added support for the MariaDB type. Thanks to kratorius. * ANDROID: Added field configuration utility to avoid Dao creation performance problems with annotations. Thanks to Ian Dees. * ANDROID: Added @DatabaseFieldSimple and other smaller annotations for speeding up Android configuration. * ANDROID: Added SQLiteDatabase constructor to AndroidConnectionSource for external SQLite databases. Thanks to Michael. * ANDROID: Removed the SqliteOpenHelperFactory class that was deprecated in 4.20. * ANDROID: Fixed issue that was not properly supporting CREATE IF NOT EXISTS. Thanks to birbird. Bug #3412135. * ANDROID: Added RuntimeExceptionDao for shielding applications from _some_ of the SQLException handling. 4.25: 8/22/2011 (svn r1897) * CORE: Fixed problem with id=true with UUID fields not working. Thanks to Evan Grim. Bug #3392691. * CORE: Exposed the fields in CreateOrUpdateStatus that were package protected. Thanks to steffen. Bug #3383768. * CORE: Added to FieldType getter for foreign field type. Thanks to Jean-Maxime Pelletier. Feature #3386969. * CORE: Added allowGeneratedIdInsert feature to allow optional generated-id fields. Thanks to Craig Andrews. * CORE: Fixed problem with null ids an createOrUpdate. Thanks to João Bosco. Bug #3390169. * CORE: Fixed race condition with field and constructor accessibility. Thanks to Jeroen Rakhorst. Bug #3381083. * CORE: Added config file to the LocalLog so we can specify which classes get which log levels. 4.24: 7/18/2011 (svn r1840) * CORE: Fixed problem with updating a field's value to null using UpdateBuilder. Thanks to Jeremy Mcjunkin. Bug #3359086. * CORE: Fixed foreign collection bug where clear, remove, ... affected whole table. Thanks to Patras Vlad. Bug #3313003. * CORE: Bug with the setting of the value of serializable types. Thanks to kyle lampert. Fixes #3363423. * CORE: Added feature where foreign collections now contain objects whose foreign fields are set with the parent object. * CORE: Added Dao.queryForMatchingArgs() and queryForFieldValuesArgs() to avoid SQL escaping issues. Thanks to coder sam. * CORE: Added support for CREATE TABLE IF NOT EXISTS for Postgres > 9.1 Thanks to Daniel Colchete. * CORE: Added arguments to Where.raw() and added Where.rawComparison() to better handle escaped args. Thanks to Daniel Colchete. * CORE: Removed deprecated raw results methods that were replaced in 4.10. * CORE: Removed deprecated JAVA_DATE* types that were replaced in 4.12. * ANDROID: Added a OrmLiteBaseActivityGroup to the various base classes. Thanks to zachawilson. 4.23: 6/3/2011 (svn r1805) * CORE: Allow the user to be able to override the persister for the built-in types as well. * CORE: Added a orderColumnName field to the ForeignCollectionField to order collections based on a column. * CORE: Moved the external log classes over to the JDBC package to make core a bit smaller. * CORE: Added queryForSameId(), createIfNotExists(), and createOrUpdate() to DAO. 4.22: 5/19/2011 (svn r1777) * CORE: Fixed major problem with DAO loops and caching. Thanks much to the user list. Bug #3301588. * CORE: Fixed problem with queryForMatching() and queryForFieldValues() if no fields. Thanks to JC. Bug #3301253. * CORE: Fixed problem with configuring fields in base class without annotations. Thanks to JC, Rahan. Bug #3301698. * CORE: Fixed problem with LazyForeignCollection.toArray(T[]). Thanks to Skylar. Bug #3302924. * CORE: Added initial support for defining external DataPersister classes for persisting non-built-in types. Thanks to Craig. * CORE: Removed auto-downcasing of hand wired table name in DatabaseTableConfig. Thanks to Tomas. Bug #3302976. * CORE: Added the maxEagerForeignCollectionLevel field to the @ForeignCollectionField annotation to limit recursion. * CORE: Renamed the maxForeignLevel field in @DatabaseField to be maxForeignAutoRefreshLevel to make more sense. * CORE: Added support for creating empty foreign collection field so you can use add() on it when creating. Thanks to Craig. * CORE: Added the concept of closeLastIterator() to the DAO and CloseableWrappedIterable for reentrant usage. * CORE: Added better connection/statement testing code and fixed some additional missing closes. * JDBC: Tweaked the HSQLdb database type to acknowledge that it seems to support inner transactions. 4.21: 5/5/2011 (svn r1721) * CORE: Added maxForeignLevel=1 type of setting to @DatabaseField to limit the foreign field recursive calls. * CORE: Added a isOpen() to the ConnectionSource interface and implementations. * CORE: Fixed a problem with the foreign auto-refresh loops and the last level. Thanks to Xavier. Bug #3296400. * JDBC: Fixed a _very_ bad, embarrassing problem with unclosed statements. Thanks to MathieuLoutre. Bug #3298098. * ANDROID: Added better logging and protection around use of the open-helper and AndroidConnectionSource after close. 4.20: 4/30/2011 (svn r1686) * CORE: Refactored a couple of places to try and improve DAO creation with foreign fields. Thanks to the user list. * CORE: Improved the dao caching when creating/dropping tables. Thanks to the user list. * CORE: Refactored TableUtils.clearTable() and other methods to improve memory usage. * CORE: Deprecated the BaseDao.createDao() methods. The DaoManager.createDao() methods should be used instead. * CORE: Improved the size guessing during StringBuilder creation to reduce enlarge calls. Thanks to Andy. * CORE: Added support for uniqueCombo field in DatabaseField annotation that supports combined unique fields. * CORE: Turned the SelectArg into the ArgumentHolder interface so we could add other implementations. * CORE: Added QueryBuilder.orderByRaw() and groupByRaw() so users can construct their own SQL. Thanks to jrj. * CORE: Fixed interaction between foreignAutoRefresh and foreign collections. Thanks to jaxelrod. Bug #3290093. * CORE: Fixed a bug with using the UpdateBuilder with Date fields. Thanks to stewert. Bug #3286455. * CORE: Fixed some documentation problems with PreparedQuery. Thanks to Harry. * ANDROID: Significantly improved the mechanism to inject the open helper class. Thanks to JC and Chris Banes. * ANDROID: Improved the OrmLiteBaseActivity and other base classes' use of the context. Thanks to Chris Banes. * ANDROID: Added level caching for speed and added a ORMLite log tag for easy enabling all logs. 4.19: 4/11/2011 (svn r1638) * CORE: Fixed stupid DaoDaoEnabled.delete() cut and paste bug. Bug #3276679. * CORE: Added support for storing char fields with ORMLite. Derby, of course, was the most painful to get working. * CORE: Added convenience query() and iterator() methods to the QueryBuilder and Where objects. * CORE: Added a countOf() call to the Dao to return the select count(*) result for the table. * CORE: Added a clearTable() method to TableUtils. It will do a TRUNCATE if supported otherwise a DELETE. * CORE: Added a convenience queryForEq() method to the Dao which matches on a single field value. * CORE: Added support for CREATE TABLE IF NOT EXISTS for those databases which support it: H2, MySQL, SQLite. * CORE: Added handling of >2 arguments to Where.and() and or() which can now string together many clauses with AND/OR. * CORE: Added a Dao.queryForMatching() method to find entries in the database that match fields in the object passed in. * CORE: Added a Dao.queryForFieldValues() method to find entries in the database that match the field/value map argument. * CORE: Tightened up some of the allocations done internally when building statements. 4.18: 3/30/2011 (svn r1593) * CORE: Bug with lazy foreign collections are not properly limiting iterator. Bug #3260099. Thanks to Brady. * CORE: Bug with updating of foreign collections. Bug #3260103. Thanks to ede. * CORE: Added better support for batch tasks by using a database transaction if auto-commit isn't supported. * ANDROID: You can now use the callBatchTask method on the DAO which will use a transaction. 4.17: 3/27/2011 (svn r1576) * CORE: Fixed a couple of places were I was using Java 1.6 only methods. Bug #3260096. Thanks to Javier and jc. * CORE: Improved the reentrance during query and class configuration initialization. * CORE: Improved the DaoManager handling of generic dao classes and a registerDao method. Thanks to jc. * ANDROID: Fixed Android v1.6 support by removing some Java 1.6 methods. 4.16: 3/23/2011 (svn r1553) ** WARNING: ** 4.16 was released with some Java 1.6 calls which broke a lot of people. This was fixed in 4.17. * CORE: Added support for @@ForeignCollectionField which supports eager, lazy loaded collections of foreign objects. * CORE: Added a DaoManager which caches DAOs that are constructed so we only do it once per class. Thanks to jc. * CORE: Added BaseDaoEnabled class for supporting data objects which can self refresh/update/etc.. Some refactoring. * CORE: Added UUID DataType for supporting the storing UUID fields. Auto-generation of UUID ids also works. Thanks to jc. * CORE: Added STRING_BYTES DataType for supporting the storing of Unicode strings as byte[] blobs in the database. * CORE: Fixed problem with SQLite (JDBC, Android) was not handling nested transactions correctly. Bug #3208074. * Android: Users should consider using the new DaoManager instead of making DAOs by calling BaseDaoImpl directly. * Android: Fixed problem with SQLite nested transactions correctly. They are not supported under Android. * Android: Added the STRING_BYTES DataType so you can store Unicode strings in SQLite appropriately. 4.15: 3/7/2011 (svn r1513) * CORE: Fixed a problem where Integer and Long fields could not be id fields. Bug #3202117. * CORE: Resolved bad bug with querying for objects with null foreign field values. Bug #3199649. Thanks to Micael. * CORE: Removed the confusing Where().foreignIdEq() and foreignIdIn() methods. Little extra value and loads of confusion. * CORE: Refactored +1/-1 dance that core was doing to access and set SQL arguments. Now everything is 0 based in -CORE. * JDBC: Changed TableCreator to take a list of Dao instead of BaseDaoImpl. * JDBC: Added alpha version of a generic ODBC database type. Had to refactor null detection. Thanks much to Dale Asberry. * JDBC: Added alpha version of a Netezza database type. Thanks much to Richard Kooijman. 4.14: 2/28/2011 (svn r1474) * CORE: Added BYTE_ARRAY type for handling byte[] directly and not as a serializable. dataType _must_ be specified. * CORE: Changed SERIALIZABLE type so that it _must_ be specified with the dataType. * CORE: Added a Where.raw() method which allows you to inject a raw statement into the WHERE SQL clause. 4.13: 2/26/2011 (svn r1453) * CORE: Added a special default string to @DatabaseField to allow default values of "". Bug #3191367. * CORE: Added parameters to the queryRaw(), updateRaw(), and executeRaw() DAO methods. Thanks to Luke. * CORE: Added support for the QueryBuilder.offset() method. Not supported on all database types. * CORE: Added initial ping statements for verification that the database connection is still valid. * CORE: Revamped the test hierarchy and implemented H2 stubs to be able to test CORE better. * ANDROID: LONG_STRING handling under Android never worked. Bug #3192744. * JDBC: Added isTableExists() boolean to the DAO and the DatabaseConnection. This does not work in Android. * JDBC: Added a new constructor and other methods to allow use of TableCreator outside of Spring. * JDBC: Revamped the jdbc pooled connection source to add a keep-alive thread and connection testing. 4.12: 2/17/2011 (svn r1417) * CORE: Added LONG_STRING data type for supporting longer String fields. * CORE: Renamed and deprecated data types JAVA_DATE, JAVA_DATE_LONG, and JAVA_DATE_STRING to remove the JAVA_ prefix. * JDBC: Added DaoFactory class for spring to create DAOs without having to define a Dao subclass. * JDBC: Fixed spring TableCreator creating of tables from just the class name. Bug #3182783. * ALL: Updated documentation with more examples and revamped examples to be more stand-alone. 4.11: 2/14/2011 (svn r1382) * CORE: Added Where.in(QueryBuilder) and Where.exists(QueryBuilder) sub-query handling. * CORE: Added executeRaw() and updateRaw() methods to the Dao interface and associated classes. * CORE: Added proper checking for the log level _before_ expanding the {} args. Bug #3180862. * CORE: Fixed missing save/clear of special connection for setting autocommit for batch tasks. Bug #3178539. * CORE: Made some fields and methods in BaseDaoImpl protected for folks extending this the base dao. Thanks to jc. * CORE: Replaced NPE with better SQLException if trying to update just the id. Bug #3178360. Thanks to jc. * CORE: Added Where.idEq(), Where.foreignIdEq(), and Where.foreignIdIn methods to expand query functionality. * CORE: Added better handling of nulls returned by RawRowMapper. It also now throws SQLException. Thanks to Larry. * ANDROID: Exposed the cursor from the iterator and android database results. 4.10: 2/2/2011 (svn r1339) * CORE: Revamped the logging classes to use Levels. Also added a JavaUtilLog implementation. * CORE: Added support for the foreignAutoRefresh boolean in DatabaseField which automagically refreshes foreign fields. * CORE: Significantly refactored the RawResults class (now deprecated) and created GenericRawResults. * CORE: Dao.queryForAllRaw() and Dao.iteratorRaw() now deprecated. Replaced with Dao.queryRaw() methods. * CORE: Added the ability to get results as an array of Objects when you pass in the column-types. * CORE: Found some unclosed statements in update(PreparedUpdate), delete(PreparedDelete) methods. Bug #3170021. * ANDROID: Added missing OrmLiteBaseListActivity base class. * ANDROID: Reordered the log class detection to put Android Log before commons logging. Bug #3167100. * ANDROID: Split out the -core from this package. You now need to install BOTH core and android (or jdbc) packages. * ANDROID: Removed the deprecated AndroidTableUtils class. * ANDROID: Better wrapping of android.database.SQLException with java.sql.SQLException. * JDBC: Split out the -core from this package. You now need to install BOTH the core and jdbc (or android) packages. * ALL: Added LICENSE.txt file to all releases and documentation. It is basically the ISC public domain license. 4.9: 1/26/2011 (svn r1286) * CORE: Changed the generated index names to have a table-name prefix and always have a "_idx" suffix. 4.8: 1/25/2011 (svn r1271) * CORE: Added uniqueIndex = true and uniqueIndexName = "..." to the DatabaseField annotation to create unique indexes. * ANDROID: Fixed the resulting jar so that it doesn't include the -core java files as well. * JDBC: Fixed the resulting jar so that it doesn't include the -core java files as well. 4.7: 1/24/2011 (svn r1250) * CORE: Added index = true and indexName = "..." to the DatabaseField annotation to create indexes. Thanks to Larry. * CORE: Added a generic arguments to the Where() to support a convenience prepare() method. * CORE: Added a close() method to RawResults which will close the iterator if returned from iteratorRaw(). * ANDROID: Fixed the javadocs so they get merged in from CORE. Still struggling with the source jar. * JDBC: Fixed the javadocs so they get merged in from CORE. Thanks to jaxelrod. Still struggling with the source jar. 4.6: 12/15/2010 (svn r1217) * CORE: Fixed issues with infinite recursion if there is a foreign object loop. Bug #3137579. * CORE: Revamped the call structure internally to make way for the SimpleDB backend. Exposed FieldType array more. * CORE: Removed some old deprecated methods from QueryBuilder and TableUtils. * ANDROID: Added protection in case subclass onCreate is called so another connection isn't saved. Bug #3117883. 4.5: 11/17/2010 (svn r1178) * CORE: Fixes some problems with Dates and Enums being id types. * CORE: Fixed a big problem with boolean value escaping for some database types. Bug #3110466. * CORE: Added code to throw exceptions when Serializable fields are ids or part of SQL comparison. Bug #3110468. * CORE: Added support for fields being required to be SelectArgs (Date for example). Bug #3110948. * JDBC: Added better detection of database types from the URL. * JDBC: Changed SQLite boolean representation to be 1/0 instead of true/false. Bug #3110467. * JDBC: Added callBatchTasks() method to the Dao for running batch tasks. Not applicable to Android. * JDBC: Removed some deprecated methods from DatabaseTypeUtils. * JDBC: Significantly improved the testing for all field types. Thanks to Larry for point out some critical bugs. 4.4: 11/10/2010 (svn r1135) * CORE: Fixed a major problem with refreshing some field types. Bug #3106962. 4.3: 11/9/2010 (svn r1113) * CORE: Renamed the ConnectionSource#saveTransactionConnection and clear to be saveSpecialConnection and clear. * CORE: Added functionality to RawResults to get all results as a List. * CORE: Added functionality to RawResults to get all results as a List with RawRowMapper. * CORE: Added nested transaction support. Had to add per-database checks. Bug #3106108. * CORE: Added walking up the super classes to find database fields. Bug #3106109. * CORE: Added an isClosed() method to DatabaseConnection so the connection source can detect problems. * CORE: Removed some deprecated methods from the DAO and around the prepared statement code. * CORE: Added to the manual a section on identity columns. Another section on database flavor notes. * JDBC: Added protection against inner connection saves. * ANDROID: Solve the problem of recursion in onCreate and onUpdate differently. Bug #3096875. 4.2: 10/13/2010 (svn r1064) * CORE: Improved messaging around unknown columns. * CORE: Added a save and clearTransactionConnection to the TransactionManager. Bug #3085345. * CORE: Added a missing releaseConnection call to the transactionManager. Bug #3085344. * CORE: TableUtils was not releasing its database connection for table create/drop. Bug 3086752. * JDBC: Added new reentrant, pooled connection manager JdbcPooledConnectionSource. Needs to be reviewed!! * JDBC: Added support for transactions to DataSourceConnectionSource and pooled connection sources. 4.1: 10/8/2010 (svn r1031) * CORE: removed some old deprecated methods. * JDBC: fixed problem where connections were not being closed in the DataSource wrapper. Bug #3083799. 4.0: 10/3/2010 (svn r1004) * CORE: Removed most external usage of the DatabaseType since the ConnectionSource now provides it. * CORE: BaseDaoImpl now knows how to self-initialize if constructed with the ConnectionSource. * CORE: Dao.queryBuilder() now returns a QueryBuilder. You call QueryBuilder.prepare() to get a PreparedQuery. * CORE: Added Dao.updateBuilder() and deleteBuilder() for constructing custom UPDATE and DELETE statements. * CORE: Tightened up some more classes to remove unnecessary allocations. * JDBC: Deprecated the DatabaseTypeUtils calls since we should just construct a JdbcConnectionSource directly. * JDBC: Removed the DatabaseTypeFactory and simplified the Spring code since we removed the external DatabaseType. * JDBC: JdbcConnectionSource now knows how to self-initialize if constructed with the URL. * JDBC: DataSourceConnectionSource now needs the database URL as well as the DataSource. * ANDROID: Made changes to OrmLiteSqliteOpenHelper to remove the DatabaseType references. ------------------------------------------------------------------------------------------------------------------------ 3.5: 9/28/2010 (svn r948) * CORE: Revamped the StatementBuilder to allow foreign fields to be queried from the object as opposed to just its id. * CORE: Because of the internal changes, the prepareStatment() call now can throw SQLException. * CORE: Significantly reduced the number of objects created by the DAO and other classes to lower GC overhead. * ANDROID: Core refactoring should improve speeds due to reduced memory overhead 3.4: 9/24/2010 (svn r916) * CORE: Revamped the log factory to use the internal LogType enum better and to construct the logs using reflection. * CORE: Added javax unique=true handling which should have been in 3.3. * ANDROID: Moved AndroidLog over to the Android package and reworked it to make direct calls to the android.util.Log. * ANDROID: Fixed problem with Android cursor were field-name escape characters were in column map. Bug #3074249. 3.3: 9/22/2010 (svn r883) * CORE: Added UNIQUE constraint handling for ensuring fields are unique in all rows of the table. * CORE: Added a missing deprecated BaseJdbcDao that should have been in 3.2. * CORE: Added a better 'Getting Started' section to the manual. Thanks much Nelson! * JDBC: Added a missing setDataSource to the DataSourceConnectionSource (fixes bug #3066894). 3.2: 9/14/2010 (svn r833) * Large internal code reorganization to allow database calls outside of JDBC for better Android support. * Split ormlite into 3 packages: -core, -jdbc, and -android * Abstracted DataSource/Connection/ResultSet classes to be ConnectionSource/DatabaseConnection/DatabaseResults interfaces. * Renamed the BaseJdbcDao to be BaseDaoImpl since it is no longer just JDBC * Renamed Dao.queryBuilder() -> Dao.statementBuilder() to accommodate custom delete, etc. statements * Renamed the QueryBuilder object to be StatementBuilder * Renamed the PreparedQuery object to be PreparedStmt * You don't set your DataSource on the DAOs anymore. You use the DataSourceDatabaseConnection wrapper class. * Created an internal SqlType enumeration which was a better external abstraction of SQL type integers. 3.1: 9/12/2010 (svn r717) * Closer but still not ready. 3.0: 8/17/2010 (svn r561) * Not ready for prime time ------------------------------------------------------------------------------------------------------------------------ 2.12: 8/16/2010 (svn r548) * Added a logger which should detect and delegate to the internal Android logger. * Changed the logger classes to use reflection to remove the compilation errors if classes aren't there. * Added to the documentation on how to remove log classes which are red because of missing classes. 2.11: 8/13/2010 (svn r537) * Removed the final dependency by using reflection to get at the javax.persistance annotations. * Added a persisted boolean to DatabaseField annotation so you can easily disable a field. 2.10: 8/13/2010 (svn r526) * Added some better support for Android OS built-in and 3rd party JDBC drivers. 2.9: 8/11/2010 (svn r514) * Found and fixed embarrassing problem where the local logger wasn't filtering by level. (bug #3043423) * Improved some docs. 2.8: 7/20/2010 (svn r503) * Found and fixed problems with boolean default values under Derby. (bug #3032387) * Trickle down changes which affected a lot of FieldType and JdbcType. Also improved the null handling. * Fixed the docs which referenced the BaseDao which was completely wrong. 2.7: 7/19/2010 (svn r488) * Revamped the logging classes so we can remove the hard dependency on commons-logging. * Changed MySQL to use DATETIME instead of TIMESTAMP for Date fields. * Added the createDao static method to the BaseJdbcDao so you can create DAOs without a new class. 2.6: 7/7/2010 (svn r473) * Fixed bug 3026487 where the limit in QueryBuilder was removed after a prepare. * Added log wrapping so we can remove the commons-logging dependency and replace it with a LocalLog impl. * Isolated the javax.persistence usage into one class for easy removal. * Renamed some database type methods. 2.5: 6/28/2010 (svn r458) * Finally figured out all of the tricky conf settings to get ORMLite published to the central maven repo. 2.4: 6/26/2010 (svn r397) * Fixed bug with Derby and Hsqldb where raw queries would not match quoted names. Capitalized field names. * Fixed a problem where value quoting for numbers and string arguments weren't handled right. * Fixed problem in MySQL where timestamps were by default not-null and set to the current time. * Fixed problem where default value and null specifier were generated in wrong order in CREATE TABLE. * Removed the restriction that primitive values couldn't have default values. Not sure why that was added. * Added initial code to allow the user to run raw String queries through the DAOs. * Changed the iterator returned by the Dao to a CloseableIterator to hide internal methods. * Added throwIfNull annotation to DatabaseField to throw if a null field is pulled into a primitive. 2.3: 6/23/2010 (svn r382) * Fixed a problem with null handling which would come back as 0s. 2.2: 6/18/2010 (svn r374) * Added enum support with both integer ordinal and string name support. * Changed the mechanism for detecting foreign fields with the the javax.annotations. 2.1: 6/14/2010 (svn r366) * Added the ability of storing Serializable objects as the new SERIALIZABLE type. * Fixed problem with generated ids under MS SQL. * Trimmed the test dependencies and documented them. * Got rid of unused close and destroy methods on the DAOs and JdbcTemplate. * Fixed bug with username and password settings on the connection. * Added Java 6 methods to the data source. Fixed Java 6 compile error. 2.0: 6/12/2010 (svn r344) * Finally took the plunge and removed the Spring dependency. Down to 2 dependencies. ------------------------------------------------------------------------------------------------------------------------ 1.13: 6/11/2010 (svn r332) * Fixed Postgres mixed case problem with fields and sequence numbers. 1.12: 6/7/2010 (svn r324) * Added database column case conversion because postgres had some problems with sequence name case * Added support for javax.persistence annotations (@Entity, @Column, @Id, @GeneratedValue). * Added a cache of the column positions for mapped queries to make the looking up of column names faster. * Finished up the next texinfo online and print documentation. * Added an initial try at a DB2 database type. Completely untested. 1.11: 5/21/2010 (svn r298) * Revamped the DatabaseTableConfig wiring. Better. * Found a problem with long sequence names in Postgres. * Added new DatabaseFieldConfig wiring for hand or Spring wiring a class' details if you don't use annotations. * Fixed problem when a class just has a generatedId field which cannot be inserted or updated. * Found/fixed an interesting bug with generated-id and canBeNull = false. * Added queryForFirst method to the DAO hierarchy. 1.10: 5/15/2010 (svn r281) * Revamped TableInfo constructors to support taking in a list of FieldType for external object config. Bit messy. * Made the InnoDB engine the default for tables created the the MySQL DatabaseType. 1.9: 5/14/2010 (svn r269) * Added support for using getXXX and setXXX methods instead of field access reflection. * Added initial TransactionManager for easy support of transactions. * Lots of notes, documentation, javadocs. * Added an int return value to the refresh() method to match update and delete. 1.8: 5/2/2010 (svn r246) * Starting initial work to support foreign objects. * Some refactoring of the id field assignment. 1.7: 4/29/2010 (svn r236) * Significant revamping of the junit tests. * Initial take on a MS SQL Server port using the JTDS driver. Kudos to the JTDS folks. * Turns out that HSQLDB is a bit different from the rest (grrrr). I added an appendLimitValue to database type. * Added LIMIT support to the package. This caused a bunch of trickle down. * Renamed some of the is fields in the DatabaseType. Added isLimitSupported because of Derby. Grrrrrr. * Added an initial take on an Oracle database type. No access to an Oracle db so some guesses. * Added a number min/max test. Exposed some strangeness with Derby. * Duplicate field issue in test found by Sqlite. Added additional tests and moved tmp databses. 1.6: 4/27/2010 (svn r195) * Added license stanza. * Refactored the id-field configuration calls to allow for better override methods. * Better hsqldb support with the help of the mailing list. 1.5: 4/24/2010 (svn r181) * Massive move of source code down into trunk/branch hierarchy. * Ton of changes as I add support for Sqlite and Hsqldb. * Lot of refactoring to make the BaseDatabaseType more generic. * Added logging of arguments to statements by setting the ormlite.log.arguments system property to be true. * Added auto-drop for TableCreator and tuned the examples and tests. 1.4: 3/24/2010 (svn r164) * Added a couple of examples showing simple usage of the package and usage with Spring. 1.3: 3/18/2010 (svn r156) * New factory class and tuned the DAO wiring for better Spring wiring. * Return the query string prepared by the query builder for logs or external use. * Added better logging of arguments being null replacing NPEs. 1.2: 2/9/2010 (svn r141) * Replaced Stack (which extends Vector) with internal stack that uses ArrayList. * Allow rows with just GeneratedId fields. 1.1: 2/2/2010 (svn r129) * "It's ready" * Finally got the deploy to SF to work. * Added deleteIds for deleting a collection of ids. * Major revamping of the build statement stuff. * Collapsed the StatementBuilder class into each of the mapped statements. Feels a lot tighter. ------------------------------------------------------------------------------------------------------------------------ 0.12: 2/1/2010 (svn r119) * Major revamping of the MappedStatement class to pair it down and get a class hierarchy going. 0:11: 2/1/2010 (svn r110) * queryForAll(PreparedQuery) should be named query instead since it will not return all. Bleah. * Added delete(Collection) call to the Dao to delete a number of items using SQL IN clause. * Added isNull and isNotNull methods to Where. * Fixed some query issues with derby and NOT for all but h2. Added QueryBuilder tests for each db type. 0.10: 1/31/2010 (svn r102) * Added PreparedQuery interface to hide MappedStatement. * Added updateId and refresh dao methods. 0.9: 1/31/2010 (svn r99) * Added better handling of classes with just an id field. * Renamed StatementMapper to MappedStatement which is much better. * Moved the select args to the statement mapper and got rid of the prepared query. 0.8: 1/27/2010 (svn r85) * Lot of javadoc work. 0.7: 1/27/2010 (svn r79) * Added prepared statement argument injection and moved that code into PreparedQuery. * Renamed BaseDao to Dao since it was an interface. Duh. * Updated the SQL to produce uppercase SQL statements and changed method names from add to append. * Major revamping of the query internals with the addition of the QueryBuilder class. * Fixed escaping in H2 and MySQL. 0.6: 1/23/2010 (svn r55) * Major reorganization after some good feedback from Chris. I should be dealing with a DataSource. * Renamed DatabaseConnection to DatabaseType. * Added initial take on queryAll and interator ordering. 0.5: 1/19/2010 (svn r39) * Ouch, fixed bad bug with storing of null dates in the database. * Fixed postgres primary key id escaping. 0.4: 1/17/2010 (svn r32) * Added initial support for the derby database. * Fixed problems with ids not being set as primary keys. * Added more types to the jdbc list: byte, short, float, double. 0.3: 1/13/2010 (svn r19) * Improved the Postgres handling of sequence numbers. * Fixed bug with the default value stuff. * More extensive postgres tests exposed a bunch of issues with table and column-name escaping. * Added the objectsEqual call for testing purposes. 0.2: 1/11/2010 (svn r13) * Some class renaming and reorganization. * Lots of javadocs. 0.1: 1/10/2010 (svn r8) * Starting to look stable-ish. * Complete revamping of the query processing. * Still fighting a bit with object hierarchy. * Fixed a bunch of bugs in the state building escaping of reserved words. 0.0: 1/7/2010 (svn r1) * First check-in.