[
http://opensource.atlassian.com/projects/hibernate/browse/HB-849?page=com...
]
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira