[hibernate-issues] [Hibernate-JIRA] Commented: (HB-849) Locale issue with the generated class alias name

Orhan Yilmaz (JIRA) noreply at atlassian.com
Wed Nov 1 16:00:06 EST 2006


    [ http://opensource.atlassian.com/projects/hibernate/browse/HB-849?page=comments#action_25066 ] 

Orhan Yilmaz commented on HB-849:
---------------------------------

this is a permanently the solution but hibernate sql generator must use en_US locale.
-----------------------
package com.eksera.service;

import org.hibernate.*;
import org.hibernate.cfg.*;

import java.util.Locale;
import java.util.Properties;
import java.util.List;

import org.apache.log4j.Logger;

public class HibernateSession   {
	private static Logger logger = Logger.getLogger(HibernateSession.class.getName());
    public static Properties props = null;
    private static SessionFactory sessionFactory = null;
    private static final ThreadLocal threadSession = new ThreadLocal();
    private static final ThreadLocal threadTransaction = new ThreadLocal();
    static {
//#### set locale here
    	Locale.setDefault(Locale.ENGLISH);
        Configuration c = new Configuration().configure();
        props = c.getProperties();
        sessionFactory = c.buildSessionFactory();
    }
    public static Properties getProperties() {
        return props;
    }
    public static Session openSession() { 
        Session s = (Session) threadSession.get();
        if (s == null) {
            s = sessionFactory.openSession();
            threadSession.set(s);
        }
        return s;
    }
    public static void closeSession() { 
        Session s = (Session) threadSession.get();
        threadSession.set(null);
        if (s != null && s.isOpen())
            s.close();
    }
    public static void beginTransaction() { 
        Transaction tx = (Transaction) threadTransaction.get();
        if (tx == null) {
            tx = openSession().beginTransaction();
            threadTransaction.set(tx);
        }
    }    
    public static void commitTransaction() { 
        Transaction tx = (Transaction) threadTransaction.get();
        if ( tx != null && !tx.wasCommitted()
             && !tx.wasRolledBack() )
            tx.commit();
        threadTransaction.set(null);
    }
    public static void rollbackTransaction() { 
        Transaction tx = (Transaction) threadTransaction.get();
        try {
            threadTransaction.set(null);
            if ( tx != null && !tx.wasCommitted()
                 && !tx.wasRolledBack() ) {    

                tx.rollback();
            }
        } finally {
            closeSession();
        }
    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }           
}


> Locale issue with the generated class alias name
> ------------------------------------------------
>
>          Key: HB-849
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/HB-849
>      Project: Hibernate2
>         Type: Bug

>   Components: core
>  Environment: Hibernate 2.2
>     Reporter: Reha CENANI
>     Assignee: Emmanuel Bernard

>
> Original Estimate: 1 minute
>         Remaining: 1 minute
>
> generateAlias method of the net.sf.hibernate.loader.Loader uses toLowerCase() when generating class aliases. Since the toLowerCase() makes conversion by using the default system locale, some non-English locales (e.g. Turkish) cause improper alias generation. 
> For example, when the default system locale is set to Turkish (tr_TR), letter 'I' is converted to 'dotless i', instead of 'i'. Because of this, generated aliases and the sql statements which depend on these aliases contain wrong characters.
> In order to prevent this situation, replacing toLowerCase() with toLowerCase(Locale.US) explicitly determines which locale will be used during the conversion.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira




More information about the hibernate-issues mailing list