[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