hibernate会比较区域设置和字符串吗? 所以我正处于一个巨大的重构中,无法启动应用程序并测试它,不幸的是,我都没有时间为这个测试创建一些小应用程序,所以我认为这个伟大的社区有一些经验丰富的人已经做过这件事,我恳求他们的帮助。 我的问题是:hibernate是否能够使用限制来比较String和java.util.Locale,例如此代码是否有效 public SomeClass getOne(String locale){ return session.createCriteria(SomeClass.class) .add(Restrictions.eq("locale", locale)).uniqueResult(); }

hibernate会比较区域设置和字符串吗? 所以我正处于一个巨大的重构中,无法启动应用程序并测试它,不幸的是,我都没有时间为这个测试创建一些小应用程序,所以我认为这个伟大的社区有一些经验丰富的人已经做过这件事,我恳求他们的帮助。 我的问题是:hibernate是否能够使用限制来比较String和java.util.Locale,例如此代码是否有效 public SomeClass getOne(String locale){ return session.createCriteria(SomeClass.class) .add(Restrictions.eq("locale", locale)).uniqueResult(); },java,hibernate,Java,Hibernate,其中,参数中的locale是一种'en'或'zh'或来自java.util.locale.toString()方法的任何其他字符串,SomeClass类似于: class SomeClass { private Locale locale; //other stuff } 如果映射与此相关,则它是关于区域设置的一部分: <property name="locale" column="locale" type="java.util.Locale"/> Locale

其中,参数中的
locale
是一种'en'或'zh'或来自
java.util.locale.toString()
方法的任何其他字符串,
SomeClass
类似于:

class SomeClass {
    private Locale locale;
    //other stuff
}
如果映射与此相关,则它是关于区域设置的一部分:

<property name="locale" column="locale" type="java.util.Locale"/>


Locale是方法中的字符串。要使其正常工作,我认为限制值必须是要为其添加条件的字段的实际类型(即-
Locale
)。这个字符串参数究竟代表什么?您似乎删除了一个右括号(
)。也许它应该在
.uniqueResult()前面。请解决此问题以澄清您的意图。它看起来像“en”或“zh”或任何其他类似于java将从locale的
toString()方法生成的语言环境。从我所看到的,您正在将
locale
类型的java值映射到属性,您正在形成一个
限制
,该属性的值应该等于给定类型的对象。这应该行得通。Hibernate支持将区域设置作为其基本类型之一。它是如何做到这一点的——也就是说,它是否真的将
String
对象与
Locale
对象或任何类似的东西进行比较——这是一个实现细节,您不应该关心。