首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate中的UserType连接

Hibernate中的UserType连接
EN

Stack Overflow用户
提问于 2008-10-08 14:51:05
回答 3查看 1.5K关注 0票数 2

在这种情况下,有没有可能让hibernate为某个“正确”的值做“正确的事情”?

代码语言:javascript
复制
from ClassA a, ClassB b
where a.prop = b.prop

问题是,prop是一个在连接表中具有不同表示的UserType。在表A中,它表示为整数,在表B中,它表示为字符。因此,eq测试转换为查看1 == 'a‘是否更多或更少,这是假的,但由1或'a’表示的对象应该是相同的,因此它们应该比较为真。

EN

回答 3

Stack Overflow用户

发布于 2008-10-23 19:56:10

我认为您可以在映射文件中使用关系上的<formula>标记来完成此操作。

例如:

代码语言:javascript
复制
<many-to-one name="myClassB" class="ClassB">
  <formula>--Some SQL Expression that converts between ClassA.prop and ClassB.prop</formula>
</many-to-one>

我使用它来关联两个表,其中一个使用整数,但将它与另一个表中的char字段关联。这可能不是你正在寻找的东西,但也许它会让你走上正确的道路。

票数 2
EN

Stack Overflow用户

发布于 2008-10-09 17:41:29

使用SQL表达式进行联接。这样,您就可以在查询本身中显式地进行类型转换。

票数 0
EN

Stack Overflow用户

发布于 2008-10-08 15:40:05

(1)将映射到"prop“的列的数据类型更改为相同。这将需要“使数据库管理员成为您的朋友”,但将导致适当的“适当”UserType使用。

(2)在equals()方法中处理类型差异

代码语言:javascript
复制
public boolean equals(Object x, Object y) throws HibernateException {
    boolean retValue = false;
    if (x == y) retValue = true;

    if (x!=null && y!=null){
        Character xChar = new Character(x);
        Character yChar = new Character(y);
        if (xChar.equals(ychar)){
            retValue = true;
        }
    }

    return retValue;
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/183185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档