我对下面的技术没有太多的背景,所以任何帮助都将不胜感激。如果有什么不清楚的地方,请随时提问。
我目前正在进行一个迁移项目,我们正在更新一些技术,包括:
现在,我们的应用程序部署到JBoss 4. x上,并使用Hibernate3.2.4.sp1。在旧的DB中,我们有许多自定义数据类型,看起来像这样(抱歉,很想把它放在表格式中,但我不知道如何在这里...):
DDL中的某些列使用自定义数据类型:
CREATE TABLE y (
our_column_name TYPE1,
...
);
当服务器启动时,我得到以下错误消息:
... javax。坚持不懈PersistenceException:org。冬眠HibernateeException:错误的列类型:我们的列名称,应为:image
在旧的设置中不会发生这种情况。请注意,在我们定义的所有自定义数据类型中,只有那些带有image和tinyint的数据类型有问题;其他人被识别,不会出错。
我们在JConnect驱动程序上运行了一个跟踪,它似乎正在检索正确的数据类型,这就是我现在关注HibernateException的原因。我见过几篇类似的帖子(出现在不同的数据库上),但基本上,它们给出了类似的解决方法:
>
这建议使用JPA注释“@Column(columnDefinition='image')
。我们也尝试过这个方法,但它似乎对启动没有任何影响(即错误仍然发生)。
在与#2相同的链接中,有人建议扩展SQL方言。然而,我认为这是不可行的——只有两种自定义数据类型(图像和tinyint)似乎会导致我们这边的问题,所以这可能是过度的。
该网站建议删除hibernate。hbm2ddl。自动=从持久性验证
。xml。我们还没有尝试过,因为我们需要验证。
改用数据类型“LOB”
自从在这里抛出异常以来,我还尝试检查了Hibernate的代码-org。冬眠地图。桌子validateColumns(Table.java:261)
,它几乎指向这一行:
boolean typesMatch = (col.getSqlType(dialect, mapping).startsWith(columnInfo.getTypeName().toLowerCase())) || (columnInfo.getTypeCode() == col.getSqlTypeCode(mapping));
然而,Hibernate的API留档在细节上有点欠缺,所以我现在很难追踪到它...
你知道是什么导致了异常吗?如果它在旧版本中工作,我们想知道Hibernate(或Sybase)中的哪些变化会导致这种情况?
这篇文档表明Hibernate是针对Sybase 15.7进行测试的,所以我不知道该在哪里继续查找。上面的#1是最好的解决方法吗?如果是这样的话,你知道为什么应该使用基类型而不是自定义数据类型(这在本质上会使自定义数据类型变得无用…)
再次提前感谢!
编辑:
尝试了以下操作:
@Column(columnDefinition='my_custom_datatype')
,则错误消失
Hibernate。hbm2ddl。自动=验证
从持久性中删除。xml,错误就会消失
我真的怀疑这是冬眠的问题。。。
如果你使用@DiscriminatorColumn,记住也要放在那里。这样地:
@DiscriminatorColumn(name = "MyTableName", discriminatorType = DiscriminatorType.STRING, columnDefinition = "char")
然后进入属性
@Column(name="MyColumnName",nullable = true, insertable = true, updatable = true, length = 1, columnDefinition = "char")
private String type;
这在本质上与上一个问题类似,因此我上面查询的代码中的typesMatch
将为false,因为col
和columnfo
返回的值不同——一个返回基本数据类型,另一个返回自定义用户类型。
因此,为了解决这个问题,有很多变通方法是可能的(我在上面的帖子中已经提到过)-
hibernate。hbm2ddl。如果可以,自动=验证
我正在尝试使用Spring Security在应用程序中实现基于DAO的身份验证。 当我试图登录到应用程序与用户我得到了这个错误: 看着@jcmwright80对这个问题的回答,我明白了我最好将类注释为。完成此操作后,我在登录时出错: 这似乎是一个与在UserDetailsServiceImpl上创建的代理对象相关的问题-我如何才能优雅地解决这个问题? 密码 安全配置的相关部分: UserDeta
我在这段代码上得到这个错误! 错误:无法将预期类型(integer->integer->Integer)->(integer->Integer)->integer->Integer'与实际类型Integer匹配
问题内容: 我已经调试了一段时间,我希望有人可以在这里阐明一些信息。 我有一个使用JDK 1.6添加到Jenkins中的Maven项目。我在这个项目中使用AOP来处理数据库事务。 当我在Jenkins中运行构建时,我的测试用例失败,出现以下异常: 本类看起来是这样的: - 是具有多种实现的接口。 我可以在IDE中执行代码而不会出现问题。为了确定是Maven问题还是Jenkins问题,我使用命令行导
问题内容: 我已经调试了一段时间,我希望有人可以在这里阐明一些信息。 我有一个使用JDK 1.6添加到Jenkins中的Maven项目。我在这个项目中使用AOP来处理数据库事务。 当我在Jenkins中运行构建时,我的测试用例由于以下异常而失败: 本类看起来是这样的: 是具有多种实现的接口。 我可以从IDE中执行代码而不会出现问题。为了确定是Maven问题还是Jenkins问题,我使用命令行导航到
我已将TS添加到我的React/Redux应用程序中。 我在我的应用程序中使用对象,如下所示: TS抛出一个错误: 类型脚本错误:类型“窗口”上不存在属性“FB”。TS2339 我想修正这个错误。 我在这里找到了答案https://stackoverflow.com/a/56402425/1114926 为什么第一个版本不起作用,而第二个版本起作用,尽管我根本没有指定FB属性?
//我正在尝试此代码,但它没有添加到firebase //它给出了这些错误 处理手势时引发了以下_TypeError:类型“List”不是类型“String”的子类型 抛出异常时,这是堆栈:#0个SharedReferences。getString(包:共享首选项/共享首选项。dart:98:35)#1 CheckItemInNot(包:e_shop/Store/storehome.dart:33