Hi Donald and Milosz, Thanks you for your answers. I think code fragment you mentioned is correct. When I tested using a path which has both mysql and oracle, OpenJPA select it as oracle. I'll set the DBDictionary explicitly in my application and test.
Thanks Milinda On Thu, Dec 17, 2009 at 2:08 AM, Miłosz <[email protected]> wrote: > Hi, > > We have been struggling with this for some time: OPENJPA-580 and > OPENJPA-760. If you know up-front what database your application will > connect to, it's safer to specify DBDictionary explicitly instead of relying > on DBDictionary auto-detection. > > Cheers, > Milosz > > > Seems like a bug related to the following code in > > DBDictionaryFactory.java, where the connection URL is being inspected > > before the driver name - > > > > > > public static DBDictionary calculateDBDictionary(JDBCConfiguration > > conf, String url, String driver, String props) { > > String dclass = dictionaryClassForString(getProtocol(url),conf); > > if (dclass == null) > > dclass = dictionaryClassForString(driver, conf); > > if (dclass == null) > > return null; > > return newDBDictionary(conf, dclass, props); > > } > > > > > > The above calls the below method, which performs simple substring > > compares for the supported databases - > > > > private static String dictionaryClassForString(String prod > > , JDBCConfiguration conf) { > > if (StringUtils.isEmpty(prod)) > > return null; > > prod = prod.toLowerCase(); > > > > PluginValue dbdictionaryPlugin = ((JDBCConfigurationImpl) conf) > > .dbdictionaryPlugin; > > > > if (prod.indexOf("oracle") != -1) > > return dbdictionaryPlugin.unalias("oracle"); > > if (prod.indexOf("sqlserver") != -1) > > return dbdictionaryPlugin.unalias("sqlserver"); > > if (prod.indexOf("jsqlconnect") != -1) > > return dbdictionaryPlugin.unalias("sqlserver"); > > if (prod.indexOf("mysql") != -1) > > return dbdictionaryPlugin.unalias("mysql"); > > if (prod.indexOf("postgres") != -1) > > return dbdictionaryPlugin.unalias("postgres"); > > . . . > > > > > > -Donald > > > > > > > > Milinda Pathirage wrote: > > > Hi Devs, > > > > > > There is a strange bug which caused JDBC exceptions when my embdded > derby > > > path contains directory called 'mysql' or 'oracle'. I am using OpenJPA > 1.1. > > > Is this a known bug. When this happens embedded derby URL is look like > > > following: > > > > > > jdbc:derby:/home/milinda/mysql/bps/database/daojpa > > > > > > Do anyone have any idea about the reason for incorrect generation of > > > prepared statement. > > > > > > Thanks > > > Milinda > > > > > > > > > > > -- Milinda Pathirage Senior Software Engineer & Product Manager WSO2 BPS; http://wso2.org/bps WSO2 Inc.; http://wso2.com E-mail: [email protected], [email protected] Web: http://mpathirage.com Blog: http://blog.mpathirage.com
