Re: Javolution support?
Gary, I saw your post on the ibatis list and was wondering if I could talk to you a little about ZK.
Re: dynamic script's
Does this not depend on how Prepared Statements are implemented? As I recall, one of the big db's does them as a stored proc. In that light, multiple statements seems reasonable, but this sort of behavior (like most things) might not valid across all the dbs that one might consider. I guess the answer is, try it. =) On 8/24/06, Larry Meadors [EMAIL PROTECTED] wrote: This works perfectly in Oracle: delete id=delete BEGIN DELETE FROM Child WHERE childId = #parentId#; DELETE FROM Parent WHERE parentId = #parentId#; END; /delete It is a single prepared statement, and performs great. Larry On 8/23/06, Daniel Pitts [EMAIL PROTECTED] wrote: Is there a way to run an SQL script from iBATIS? Such as: INSERT INTO foo (#bar#, #baz#); INSERT INTO ho (#hum#); Also, if there is, is it possible to dynamically generate the SQL to do so? Eg: INSERT INTO foo (#bar#, #baz#); iterate property=hosINSERT INTO ho (#bar#, #hos[]#);/iterate Thanks. -- If you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan
Re: iBATIS v2.2.0 Beta
I'm in the same boat. While I'm waiting for them to release the final version into ibiblio however, I just installed the iBatis 2.2.0.xxx jars into my local repository. On 8/24/06, Carlos Cajina [EMAIL PROTECTED] wrote: Hi, good morning! Regarding the iBATIS release process discussed in this thread I wonder How this release process would affect Maven repositories (i.e. ibiblio)? I'm thinking of users who, like me, have some sort of automated dependencies manager. By the way, Would the naming change in this repositories? Currently one can find iBATIS under com.ibatis, not under the apache umbrella ;^) Regards, Carlos ___ You don't see what you're seeing until you see it, but when you do see it, it lets you see many other things. - Original Message - From: Jeff Butler To: user-java@ibatis.apache.org Sent: Thursday, August 24, 2006 6:26 AM Subject: Re: iBATIS v2.2.0 Beta It is beta because it was a very large update, and we wanted some user feedback beyond our own testing. So far there has been only one issue when using the JDBC/ODBC bridge driver (rarely used I think). Our release process is to release new versions as beta, and after some time we will take a vote to upgrade the release to GA. You can read more about the process here: http://opensource.atlassian.com/confluence/oss/display/IBATIS/Release+Process My advice is to try version 2.2.0 unless you are using the JDBC/ODBC bridge driver. Jeff Butler On 8/24/06, Rashmi Dixit [EMAIL PROTECTED] wrote: Hi, I see from the website that the latest version of iBATIS released is a Beta version. What does this imply? (I apologize if my question is very juvenile). I need to upgrade from the older version to this one. However, is this is a good time to do so? Or should I wait until GA to upgrade my application? Thanks! Rashmi -- Optimism is an occupational hazard of programming: feedback is the treament. -- Kent Beck
Re: Unsubscribe?
Your question's been answered already on the list, but just as a point of reference, *IN GENRAL*, mailing lists provide a header in every mail about various administrative functions. Headers in these ibatis mails include: List-Help: mailto:[EMAIL PROTECTED] List-Unsubscribe: mailto:[EMAIL PROTECTED] List-Post: mailto:user-java@ibatis.apache.org Now I know that in this world of make it easy for the user, your mail client won't always provide an easy or well known way of LOOKING at headers that aren't date, subject, to, and from, but if you have the means, that's often a good place to start. On 8/23/06, al pivonka [EMAIL PROTECTED] wrote: How does one unsubscribe from this list, I don't have time right now to read all of this. Al Pivonka (H)317.295.1737 Those who say it can't be done, are usually interrupted by those doing it. - Original Message From: Chema [EMAIL PROTECTED] To: user-java@ibatis.apache.org Sent: Wednesday, August 23, 2006 7:41:59 AM Subject: Distinguish null and not null parameters Hello: I like to compose the next query select id=idQuery parameterClass=com.project.ParameterClass resultClass=java.lang.String SELECT ID FROM TABLE WHERE isNotNull property=field1 AND FIELD1 = #field1# /isNotNull isNull property=field1 AND FIELD1 IS NULL /isNull /select Is there another better way to distinguish null and not null parameters ? With only one parameter is not problem like in the previous example , but really I need to make a comparision with many fields of ParameterClass ( All parameters not named like fieldX ) Thanks a lot Best regards -- [Taglines] are like I Ching or Tarot. They don't mean anything, but sometimes if you think about them you'll get a useful idea. --Ron Jeffries (?)
java 1.5
Are there any gotchas or anything special I need to do in order to having an app written in java 5 using the iBatis 2.1.7 jars from maven2/ibiblio?
Re: java 1.5
I will when Abator starts writing my DAOs to do that... =) Jeff has mentioned he has some nifty things in the next couple days coming out that uses iBatis 2.2.x, so I'm waiting on that a bit. If that's not one of the provided methods, I suppose I can wrap the generated one with one that emits the genericized collections. What is the schedule for getting iBatis 2.2.x into maven? I've seen a lot of beta stuff in there now; any chance of getting it in there before release? On 8/20/06, Larry Meadors [EMAIL PROTECTED] wrote: Same here - you can even do some really cool stuff in your DAOs like: ListEmployee getEmployees(); Larry On 8/20/06, Jeff Butler [EMAIL PROTECTED] wrote: No gotchas - it works fine. Jeff Butler On 8/20/06, Michael Campbell [EMAIL PROTECTED] wrote: Are there any gotchas or anything special I need to do in order to having an app written in java 5 using the iBatis 2.1.7 jars from maven2/ibiblio?
Re: iBatis Subquery and Date error
Nathan Maves [EMAIL PROTECTED] writes: Stick with java.sql.Date. Try never to use java.util.Date. Why? The Ibatis datamapper doc (2.0, page 31) says: The use of java.sql.date types is discouraged. It is a best practice to use java.util.Date instead. I'm tending to go with the author of the framework here...
Re: how can i get attribute from inbed object?
If id in your POJO isn't populated, you either need to let the database generate one for you or you provide a value. If you're letting the db do it for you, you don't include the id in your insert sql at all, but rather use the selectKey clause of the insert statement to get the db-generated id back to your POJO. On 11/19/05, Alex Chew [EMAIL PROTECTED] wrote: Hi, all would you please help me for following issue, thanks advance. POJO: public class Account implements Serializable { private Long id; private String name; private Double deposit; private User handledby; } public class User implements Serializable { private Long id; private String username; private String password; } SQL: insert id=3DinsertAccount parameterClass=3Daccount insert into ACCOUNT (ID,NAME, DEPOSITE, FK_HANDLEBY) values (#id#, #name#, #deposit#, #handleby.id#) /insert handleby.id cannot work,the value inserted is NULL, and no other excpetion message. Must i get id of handleby User manually? regards Alex -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: Reload SqlMap xml file
On 11/9/05, Paul Benedict [EMAIL PROTECTED] wrote: I have the same problem. I've seen this requested before but I don't think there is a solution. --- Ming Xue [EMAIL PROTECTED] wrote: Hi I am using Spring with SqlMap, the sqlMapClient is configured as a Spring bean, during development, I need to modify the sqlMap xml file (actual SQLs) very often, but in order to apply the change, I need to restart my Jboss server, so sqlMapClient can reload those xmls. Is there a way to reload sqlMap xmls without restarting server (on demand)? thanks I do this albeit not with iBatis. I use spring's applicationContext (as opposed to a BeanFactory), and generally I have an ApplicationContextManager class from which I request the context. It has a getContext() and clearContext() method in it, like so. public class AppContextManager { private ApplicationContext _ctx = null; public static ApplicationContext getContext() { if (_ctx == null) { _ctx = new FileSystem(or XML)ApplicationContext(params go here); } return _ctx; } public static void clearContext() { _ctx = null; } } Now, whenever I need spring to re-read my config files, I just call clearContext. I can do this from an EJB, webservice, specific client, servlet, whatever. Granted, this re-reads *ALL* the spring config, and not just a specific setting, but it does work fine. -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: Caching resultMap sub-selects
On 11/5/05, Paul Benedict [EMAIL PROTECTED] wrote: While it is not clear, I think it is recommending to add a cache to the getProductsByCatId method (not the parent getCategoryResult). Is that correct? I have many sub-selects and it makes sense to put the cache there, the only problem being I can never tell when the cache is actually hit - everything always seems to go to the DB. I think if you see output in your logs that indicate the DB is being hit, it is. IIRC, the LACK of logging indicates a cache-hit. THis was bugging me greatly, so I put in some logging code into the cache layer for this.
Re: Caching resultMap sub-selects
It's in Jira already. I had (mistakenly) just attached the source as the body of the issue, but Clinton removed it in a later revision (I assume(?) he kept the actual source somewhere). He disagreed as to my placement of the code, which might in fact not BE the right place, but it works for me. If you like, I can send it to you directly; just let me know. (Note: I didn't do anything with OSCache, but rather the other 3 models only.) On 11/5/05, Paul Benedict [EMAIL PROTECTED] wrote: Michael, Please submit that as a patch :-) It really bugs me too. I consider this a must have feature of iBATIS. Better developer tools encourages greater use of the product. Paul --- Michael Campbell [EMAIL PROTECTED] wrote: On 11/5/05, Paul Benedict [EMAIL PROTECTED] wrote: While it is not clear, I think it is recommending to add a cache to the getProductsByCatId method (not the parent getCategoryResult). Is that correct? I have many sub-selects and it makes sense to put the cache there, the only problem being I can never tell when the cache is actually hit - everything always seems to go to the DB. I think if you see output in your logs that indicate the DB is being hit, it is. IIRC, the LACK of logging indicates a cache-hit. THis was bugging me greatly, so I put in some logging code into the cache layer for this. __ Yahoo! FareChase: Search multiple travel sites in one click. http://farechase.yahoo.com -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: Caching (please help)
On 11/5/05, Clinton Begin [EMAIL PROTECTED] wrote: Yes, the cache should work for nested selects. But have you tried just calling them directly to see if it might be a bug? Also, just for fun, try the LRU cache, instead of MEMORY. For more fun, try qualifying the cache name with any namespace you might be using. -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: Bulk inserts
On 11/3/05, Paul Benedict [EMAIL PROTECTED] wrote: Yes, SQL has a notation to INSERT multiple entries at once. What you want to do is build a statement like the following: INSERT INTO fruit (id, name) VALUES (0, 'Pear'), (1, 'Apple'), (2, 'Peach') Is that standard ANSI SQL? I know MySql supports that syntax, but wasn't aware that many (any?) others did. -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: paginated list
On 11/3/05, Zarar Siddiqi [EMAIL PROTECTED] wrote: Woah. I was under the impression that internally it's doing what's optimal by considering what database is being used. I noticed the i believe in your post. Can you please confirm this? If so, do future releases of IBatis plan on considering the database when using PaginatedList. It doesn't seem like it should be too difficult. Does IBatis do any database introspection now? How would it know what kind of db you're running [behind the javax.sql.DataSource interface]?
Re: Dynamic tables.
On 11/2/05, Larry Meadors [EMAIL PROTECTED] wrote: On 11/2/05, Ben Munat [EMAIL PROTECTED] wrote: Larry Meadors wrote: DDL != SQL :) There may be other ways of defining a DDL, but to most people it means create, drop and alter, which are ANSI SQL. It seems disingenuous of iBatis to claim it -- as David points out -- provides the full power of SQL, when it doesn't support three of the most common commands. And... ANSI SQL, or not, I have to disagree. Look at youe SQL logs sometime, and count the number of times insert/update/delete/select statements are run and compare them to the number of times alter table is run. :-) 99.% of the SQL used by an application is supported by iBATIS, and of course you are always free to try the other 0.001% if you want. To say that this does not represent the full power of SQL is a stretch at best. Indeed. To, there is a big difference between The full power of SQL and The power of full SQL. It seems the OP is wanting the latter, which is not what is advertised.
Re: Cache w/ Hierarchical ResultMaps
Just a general note here... not every tool is suitable for every project. iBatis solves a very LARGE set of needs, but it might be that it just doesn't solve THIS one (it might, but it's sounding like not...) Good luck in any case, and I wish I had a nifty solution for you. Out of curiosity, are you using ibatis' daos, or rolling your own? On 11/2/05, Paul Benedict [EMAIL PROTECTED] wrote: Reuben (I hope that's your first name :-)), Vendor / Branch / Employee / Address When I load a Vendor, I wish (if at all possible) to load it from the cache, since it contains all sub objects (Branch, Employee, Address), and is rather big. I am in the same situation (see my posts about my Fruit object). I am curious about how you feel about needing to list out, if you do, all your columns for those 4 objects to retrieve a Vendor. This assumes you're not doing 4 selects, but one select using joins. I imagine you have standalone queries like findBranch, findEmployee, findAddress which lists out their respective columns, but then you need to list out all those columns again for findVendor? I am looking for a good methodology here. I know Hibernate generates the columns to select automatically and I like that because I don't like having to tread through multiple sqlmaps just to update many select statements when things change. What is your take on my concern? __ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: best method to get SqlMapClient in web application
I'm using Spring's iBatis support for this. Fairly easy to set up and works very well. On 10/24/05, Ashish Kulkarni [EMAIL PROTECTED] wrote: Hello What is the best way to get SqlMapClient in a web application 1 , Define a singleton pattern class, and create a instance of SqlMapClient to use by all classes which need to access data. 2, Define a AbstractClass and put method to get SqlMapClient in constructor of this class, and then each class which needs to get data extends this class 3, Create Instance of SqlMapClient in one of the init servlets, and store this SqlMapClient in ServletContext and pass it as one of the parameters to all data classes 4, or any other method Ashish __ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: No operations allowed after connection closed.
On 10/16/05, Sven Boden [EMAIL PROTECTED] wrote: If you're not yet using autoReconnect in the URL of your pool, can you try using that. As in the following way: jdbc:mysql://host/db_hame?autoReconnect=true Note the upper case R in autoReconnect (it's case sensitive).Your suggestion here got me intrigued, as I am using an older version of the driver, so decided to go look at the docs for this. MySql warns: (emphasis mine)If enabled the driver will throw an exception for a queries issued on a stale or dead connection, which belong to the current transaction, but will attempt reconnect before the next query issued on the connection in a new transaction. The use of this feature is not recommended, because it has side effects related to session state and data consistency when applications don'thandle SQLExceptions properly, and is only designed to be used when you are unable to configure your application to handle SQLExceptions resulting from dead and/or stale connections properly. Alternatively, investigate setting the MySQL server variable wait_timeoutto some high value rather than the default of 8 hours. Still, if it fixes the OP's original problem, so much the better I guess.-- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Cache keys...
What does Ibatis use, and/or how does it construct a cache key? I've put some logging into the cache layer, and I see all sorts of puts, but nary a get. Not 1. I'm wondering if there's something about my objects themselves that make them not-cacheable.-- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: Cache keys...
Sorry, what I meant in my last mail is that I *SEE* a lot of gets, but they always return null. My logging shows the following sequence: get from cache, return null. get from db put to cache with key X ... time passes get from cache with key Y where, based on my usage, it should be using key X for the same object it just put. -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Cache models
Are cache-models namespaced? That is, if I define one in a namespaced SqlMap do I need to refer to it as ...cache-model=Namespace.modelname ? Even from within the same config file? With no logging in the cache layer it's hard to see what's going on. =\ -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: Getting connection from ibatis
I use a different context for unit tests and production. To do this, I'm using spring to configure the SqlMapClient, and just use a different spring config for each environment. While MINE isn't determined at runtime, it would be trivial to make it so. On 10/6/05, Agilan Palani [EMAIL PROTECTED] wrote: I hope that iam not clear in stating why I need a direct connection from IBATIS, will correctly state is now. My project runs in JBoss in one location and in tomcat in other places. Code base is same. There are some java EOD programs which will also run as separate process using IBATIS. Tomcat is not configured with a datasource but JBoss is. Hence I managed to define two context tags in the ibatis config file, and I will choose the context dynamically based on the server in which the project runs. The first context will use datasource and the other will use simple jdbc connection pool. Some of our code were using oracle tag libraries and some servlets to get oracle images and streaming media from the database. These tag libraries expect a connection to be passed to it. Hence I need to get the connection from IBATIS, where IBATIS will inturn get the connection from the configured DataSource or the connection pool, whatever it is configured to. I had done some home work to get the connection from IBATIS, but not sure whether iam doing it right. The following works when I use a SIMPLE JDBC connection pool configuration, but doesn't work when I use the datasource. Properties pCnf = new Properties(); -- if( direct.equals(dbCtx) ){ pCnf.put(ibatis.mapping.config,conf/sql-map-config.xml); }else{ pCnf.put(ibatis.mapping.config,conf/sql-map-config-ds.xml); } daoManager = DaoManagerBuilder.buildDaoManager(reader,pCnf); csafeDAO = (CsafeDAO) getDaoManager().getDao(CsafeDAO.class); -- public Connection getConnection(){ return ( (ConnectionDaoTransaction) daoManager.getTransaction(csafeDAO) ).getConnection(); } -- conn = getConnection(); stm = conn.createStatement(); rs = stm.executeQuery(query); // Fetch the underlying resultset from the JBoss Wrap //if the connection is from datasource if (rs instanceof org.jboss.resource.adapter.jdbc.WrappedResultSet ) { rs = ((org.jboss.resource.adapter.jdbc.WrappedResultSet) rs).getUnderlyingResultSet(); } // then cast to the OracleResultSet OracleResultSet oraRs = (OracleResultSet) rs; if(oraRs.next()){ image = (OrdImage) oraRs.getORAData(image,OrdImage.getORADataFactory()); } - If I use simple JDBC it works, but when datasource is used it throws the ClassCastException when I cast the resultset to OracleResultSet, any inputs? 06-Oct PM 5:54:02 ERROR [bl.ORDImageBO].getImageFromDB() Connection to DB failed: java.lang.ClassCastException: $Proxy64 java.lang.ClassCastException: $Proxy64 at com.bntasia.vivo.app.bl.ORDImageBO.getImageFromDB(ORDImageBO.java:254) at com.bntasia.vivo.app.bl.ORDImageBO.getImageFromDB(ORDImageBO.java:181) at com.bntasia.vivo.app.bl.ORDImageBO.getAssetTypeImageFromDB(ORDImageBO.java:1 18) -Original Message- From: Agilan Palani [mailto:[EMAIL PROTECTED] Sent: Thursday, October 06, 2005 10:16 PM To: user-java@ibatis.apache.org; [EMAIL PROTECTED] Subject: RE: Getting connection from ibatis Importance: High Thanks, but, do you have any answer to get the connection directly? Another project is running on a web-server which doesn't have a datasource, but uses IBATIS -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Larry Meadors Sent: Thursday, October 06, 2005 10:04 PM To: user-java@ibatis.apache.org Subject: Re: Getting connection from ibatis That is what I would do, yes. Larry On 10/6/05, Agilan Palani [EMAIL PROTECTED] wrote: Iam already using a datasource for IBATIS, do you mean I need to lookup that datasource again by-passing IBATIS and pass it to the taglib? -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Larry Meadors Sent: Thursday, October 06, 2005 8:12 PM To: user-java@ibatis.apache.org Subject: Re: Getting connection from ibatis The simplest way is to use JNDI for your datasource / transaction manager. Larry On 10/6/05, Agilan Palani [EMAIL PROTECTED] wrote: Hi Iam using ibatis in my project, with JBoss application server. I have some taglibs from oracle which uploads ORDImages (Oracle specific objects) to the database ord:storeMedia These tags either need a connection or datasource, passed as one of its argument to perform its task. Those tags will take care of committing and closing the connections. Q1. How do I get the connection from IBATIS?
Re: MS Access selectKey question
On 9/28/05, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: Hey, Im having some difficulties inserting rows into ms access. The error i get is: ... Caused by: com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in org/hisp/dhis/hmis/RoutineData.ibatis.xml. --- The error occurred while applying a parameter map. --- Check the addRoutineDataValue-InlineParameterMap. --- Check the parameter mapping for the 'id' property. --- Cause: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Invalid SQL-datatype You have id both in your select key and the inserted value, and the error said while applying the *parameter* map... What datatype is your id property of the object you're inserting? -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: Passing logged in Username and password to iBATIS
On 9/27/05, Niels Beekman [EMAIL PROTECTED] wrote: You could try Proxool: http://opensource2.atlassian.com/confluence/oss/display/IBATIS/How+do+I+connect+using+a+user%27s+credentials I have never used it and it seems an inactive project, but you could try it… proxool is active, it's just glacially slow. Good product though. -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: iBatis in a standalone (JUnit) application - NoInitialContext err or
On 9/27/05, Yee, Richard K, CTR,, DMDCWEST [EMAIL PROTECTED] wrote: Hi, I'm trying to use iBatis DAO in a standalone Java class but am getting a JNDI NoInitialContext error when I try to configure the DaoManager. I am using a SIMPLE datasource and am specifying the username, driver, etc. This is the error: Are you using spring integration? -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Re: BulkBean exception? SOLVED
With Clinton's help did some digging around, and found out I had some nulls in an integer column. iBATIS/CGLIB didn't like that so much. Lesson learned. On 9/26/05, Michael Campbell [EMAIL PROTECTED] wrote: This look familiar to anyone? com.orange_blossom.common.exceptions.PersistenceException: com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in ibatis/Customer.xml. --- The error occurred while applying a result map. --- Check the Customer.customer-result. --- The error happened while setting a property on the result object. --- Cause: net.sf.cglib.beans.BulkBeanException Caused by: net.sf.cglib.beans.BulkBeanException I have unit tests which exercise every select method and they work. When running in tomcat, this happens. -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
caching... per select?
Setting up caching in iBATIS seems frighteningly easy, so I'm anxious to try it. Can anyone give me any idea of what GETS cached; it seems to be per statement/select. Can I assume that when some class is listed in the parameterClass, that's part of the key? Is it the entire thing, or just the attributes of the parameter that get used? Lastly, how smart is this? If I have a getById and getByDescription and they both return the same object, that's an object in each cache, since they're different selects/statements, right? Thanks! -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Caching; how do I know it's working?
Is a cache hit/miss logged? I've run a test of running the same select in a loop, and my ibatis log4j output shows n copies of the prepared statement, result set operations happening. Is the logging supposed to distinguish between a cache hit and a real db call? -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Hibernate integration
I've just started using ibatis and like it quite a lot. I've seen references here and there to hibernate integration and wondered exactly what that was. When using it, what of hibernate and what of ibatis do you actually use? -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH
Single Table inheritance?
I've looked at the docs a bit and couldn't find anything like this so I suspect the answer is no, but does ibatis have any facility for single table inheritance[1]? I'm putzing around a bit with Ruby on Rails and learned about this in its ActiveRecord persistence layer[2]. I've actually had a need for it in a java project, and using ibatis, had to code around it. =( Thanks! [1] http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html [2] http://api.rubyonrails.com/classes/ActiveRecord/Base.html (scroll down to Single Table Inheritance -- I tend to view truly flexible by another term: Make everything equally hard. -- DHH