![]() |
1
3
我对此的第一印象是寻找冬眠持续的类型。
|
![]() |
2
2
您可以修改休眠本身。您所要做的就是更改类DoubleType。 当然,随着Hibernate的发展,您必须维护这个补丁,但是考虑到它在一个单一的、相当稳定的类中,这可能比为域模型中的每一个double指定一个usertype要容易。 |
![]() |
3
1
Following this discussion 我有一种感觉,冬眠并没有提供一种方法将南转化成别的东西。我认为,您必须在将NAN值写入bean成员变量(比如向setter添加保护/转换代码)之前,提前阻止它们。 编辑 我担心,最好的不愉快的解决方案是使用保护代码,更糟糕的是,在表上增加一列来标记,不管值是否是数字。这无疑会使查询和插入操作复杂化。但是您需要在数据库中使用NaN,并且您不能与JDBC驱动程序/数据库作斗争,使其正常工作(并且接受NaN作为数字字段的有效输入)。 |
![]() |
4
1
最后我使用了用户类型解决方案,但通过单元测试解决了维护问题。类型类如下:
单元测试大致是(为了简洁起见删除了一些细节):
|
![]() |
5
1
我有完全相同的问题,在这些解决方案的指导下,我还准备了一个扩展doubletype的自定义类型类。在该类中,我在set函数中将NaN值转换为空值,而在get函数中将NaN值转换为空值,因为我的数据库列可以使用空值。我还更改了NAN可能列到自定义类型类的映射。这个解决方案对于Hibernate 3.3.2非常有效。 不幸的是,在将Hibernate升级到3.6.10之后,它停止工作。为了让它再次工作,我替换了自定义类型,从扩展doubletype到实现usertype。 重要的数据类型函数实现应该如下:
下面是get和set函数:
|
|
6
-1
抱歉,但是从你的例子和你的问题判断你在理解Java持久性方面有问题。数据库实体是通过getter和setter进行自我管理的——它们可以进行您希望它们拥有的任何验证。如果您真的在没有属性的情况下设置了属性,那么就缺少面向对象开发和持久性的核心概念——特别是托管实体。 我认为你需要重新设计你的项目,有这样的问题是一个基本设计缺陷的肯定标志…只需在这里给出一些建议-这就是解决方案:
…这很容易。 |
![]() |
curtybear · 使用路径将SVG半圆弧转换为全圆弧 7 年前 |
![]() |
Franckyi · Java-解压和进度条 8 年前 |
|
user6374907 · 如何在创建文件时显示进度条? 8 年前 |
![]() |
polslinux · 打印传输过程中的百分比 12 年前 |