From what I understand, and I'm no JDO expert, using JDO means you design your data model in Java and then export it to the database. After you run your code, you go look at the database to see what JDO did.
We're designing our database schema much more carefully than that, since it will be the foundation for many apps in several different languages, with fundamentally different requirements. Is this a situation where JDO is definitely not appropriate? It seems so.
JDO seems to work when the persistence framework is an afterthought, and all the data manipulation is going to happen within your Java data model.
When there is legacy data, legacy schema, other applications that access the same data, it seems that something more flexible is required.
BTW, we're using perl to load our DB, and Entity beans to do the O/R mapping (so far - we can be convinced otherwise).