gpt4 book ai didi

java - 为什么Hibernate会忽略@Column注解的name属性?

转载 作者:行者123 更新时间:2023-11-30 05:12:59 25 4
gpt4 key购买 nike

使用Hibernate 3.3.1和Hibernate Annotations 3.4,数据库是DB2/400 V6R1,在WebSphere 7.0.0.9上运行

我有以下类(class)

@Entity
public class Ciinvhd implements Serializable {


@Id
private String ihinse;

@Id
@Column(name="IHINV#")
private BigDecimal ihinv;

....

}

出于我无法理解的原因,Hibernate 忽略指定的列名并使用“ihinv”生成 SQL:

select
ciinvhd0_.ihinse as ihinse13_,
ciinvhd0_.ihinv as ihinv13_,
...

这当然给了我以下错误:

Column IHINV not in table CIINVHD

编辑:我将hibernate的日志级别切换为DEBUG,我发现它没有处理该字段的列注释。尝试了一些随机的方法,但它不起作用。

以前有人遇到过这个问题吗?我有其他实体,它们在数据库字段名称中使用 # 的方式非常相似,并且它们是 PK 的一部分,我对它们没有这个问题。

最佳答案

您可以尝试某种引用:

例如:

@Column(name="`IHINV#`")

@Column(name="'IHINV#'")

另一种选择是深入研究源代码 Hibernate dialect for DB2看看它是否包含任何有用的内容。

当然,最简单的方法是如果可能的话从列名中删除哈希。

关于java - 为什么Hibernate会忽略@Column注解的name属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2691957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com