问题标签 [hibernate-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3794 浏览

java - Hibernate 是否不允许嵌入式 ID 复合主键类中的 @Column 只读(错误?)?

这是数据库设计(DDL):

这是Zip类+复合主键类:

休眠堆栈跟踪:

这是什么?country_code 在复合主键类中被映射为只读(可插入 = 假,可更新 = 假)。这与 EclipseLink 完美配合!IIRC @Embeddable 类允许在其列上使用 @Basic、@Column、@Enumerated、@Temporal、@Lob 和 @Embedded,所以这应该可以工作。请注意,代码与 JPA 1.0 兼容。

将 insertable = false, updatable = false 放在@JoinColumn 上时异常消失,但这不是我想要的。我更喜欢我的关联是可写的......

这是一个休眠错误吗?我正在使用 Hibernate 3.6 稳定版。

0 投票
1 回答
875 浏览

oracle - 错误 500:无法在休眠映射中初始化集合

我是 Hibernate 的新手。希望你们能帮我调试下面的错误,这真的让我抓狂。

我有一个名为 CONTENT_WORKGROUP 的表,它将映射到另一个名为 CONTENT_WORKGROUP_ROLE 的表。下面是表结构和示例数据:

CONTENT_WORKGROUP

  1. CM_WORKGROUP_ID NUMBER(15,0)
  2. WORKGROUP_ID NUMBER(15,0)
  3. ROLE_ID VARCHAR2(20 BYTE)

CONTENT_WORKGROUP_ROLE

  1. CM_WORKGROUP_ROLE_ID NUMBER(15,0)
  2. ROLE_ID VARCHAR2(20 BYTE)
  3. FUNCTION_ID VARCHAR2(40 字节)

P/S:一个用户工作组可以有多个角色(创建者、管理员、审批者)。该工作组可以执行的功能(添加、编辑、删除)可以从 CONTENT_WORKGROUP_ROLE 中查询。

样本数据:

CONTENT_WORKGROUP

CM_WORKGROUP_ID WORKGROUP_ID ROLE_ID
1 136 创建者
2 137 管理员
3 136 管理员

CONTENT_WORKGROUP_ROLE

CM_WORKGROUP_ROLE_ID ROLE_ID FUNCTION_ID

1 创建者复制
2 创建者编辑
3 创建者删除
4 创建者添加
5 管理员编辑
6 管理员批准
7 管理员拒绝

但是,当我获得特定工作组持有的 ContentWorkgroupRole 的 SET 时出现错误。

[11/23/10 15:28:56:053 SGT] 00000039 SystemOut O [23/11/2010 15:28:56.053] 错误 JDBCExceptionReporter - ORA-01722:无效数字

[11/23/10 15:28:56:100 SGT] 00000039 ServletWrappe E SRVE0068E:在 servlet 的服务方法之一中抛出未捕获的异常:操作。抛出异常:javax.servlet.ServletException:无法初始化集合:[corp.celcom.next.infochannel.model.ContentWorkgroup.contentWorkgroupRole#1]

下面是我的休眠映射文件:ContentWorkgroup.hbm.xml

CM_WORKGROUP CM_WORKGROUP_ID

内容工作组角色.hbm.xml

CM_WORKGROUP_ROLE_ID CM_WORKGROUP_ROLE

在我的 ACTION 类中,上述错误发生在这一行: Iterator iter = cw.getContentWorkgroupRole().iterator();

for(ContentWorkgroup cw : contentWorkgroupList) { Iterator iter = cw.getContentWorkgroupRole().iterator();

myForm.setAllowAdd(true); if (role.getFunctionId().equalsIgnoreCase(Constant.EDIT)) myForm.setAllowEdit(true); if (role.getFunctionId().equalsIgnoreCase(Constant.DELETE)) myForm.setAllowDelete(true); } }

奇怪的是,当我将 ROLE_ID 更改为 Integer/Long(即 1-Creator,2-Administrator)而不是使用 String 时,它工作正常!我不明白为什么以及我的代码有什么问题。

谢谢你的帮助。我已经花了 1 天时间来处理这个错误。谢谢!

0 投票
2 回答
1591 浏览

java - Hibernate 3.5 或 3.6 不支持 @Any 注释?

我目前正在进行系统迁移(从带有JPA1的hibernate 3.2.2.GA到带有JPA2的hibernate 3.6。迁移本身非常简单,没有大的更新要做(实际上我认为没有)任何)。

我面临的问题是休眠在运行时抛出异常,抱怨@Any 注释。堆栈跟踪如下:

所以这意味着休眠不再支持@Any 或@ManyToAny。这很奇怪,因为文档(从 3.3 到 3.6)提到了如何使用 @Any 注释,而 AFAIK 没有休眠版本会贬低这个注释。

我检查了hibernate 3.5源代码并且@Any注释检查也在那里,所以它也抛出了同样的异常。

对于这个问题,你们有什么解决办法吗?

多谢!

0 投票
1 回答
1530 浏览

java - Hibernate - 表的派生 java 类

我在 Netbeans 中生成了映射文件和 POJO,而不是自己编写它们。是否可以在继承类的位置使用派生类?一个例子是这样的:

所以当我创建一个新对象时:

我可以调用如下方法:

session.save(personextended) or session.delete(personextended)

?

这种情况是明智的还是我应该在生成的类中添加我需要的任何代码?提前感谢您的帮助或建议。

- - - -编辑 - - - -

在我的数据库中,我没有可以映射为继承的典型结构。我只想将附加方法与实体的主要 java 类分开。

最好的问候,萨斯。

0 投票
4 回答
54076 浏览

java - Hibernate使用PostgreSQL序列不影响序列表

我已将 Hibernate 配置为使用 PostgreSQL 序列(通过注释)为主键id列生成值,如下所示:

我在此配置中看到的是,休眠已经在持久化时分配了> 3000 的id值,而对已使用序列的查询显示以下内容:

(1 行)

问题:
有什么问题吗?
休眠应该与序列表同步吗?
如果不是,它在哪里存储最后生成的 id?

谢谢你。

0 投票
2 回答
1140 浏览

hibernate - Hibernate 工具:如何生成基类?

我最近安装了 Eclipse Helios 和 Hibernate Tools 3.4.0.Beta1。

我一直在尝试从映射文件生成“基类”,但不知道该怎么做。假设我有一个名为 Individual.hbm.xml 的映射文件。我希望 Hibernate 工具生成 2 个 POJO: - 一个 BaseIndividual.java,其中包含构造函数和 getter/setter - 一个 Individual.java,我可以在其中添加“自定义”代码,当我重新生成 POJO 时不会删除该代码

我花了很多时间寻找信息,但从未找到实际的答案。如果有人可以提供帮助...在此先感谢

0 投票
5 回答
30967 浏览

java - Java Hibernate 映射异常!(无法确定类型:java.util.Map)

我创建了一个名为 Movie 的类,其中包含以下字段:

如您所见,我使用了hibernate注释并且对象是bean。但是当我尝试使用以下代码打开我的休眠会话时......

我遇到了一个关于无法映射 Java.Util.Map 类的问题。这是异常堆栈跟踪:

我是休眠的新手,不知道到底发生了什么......请帮助我!

0 投票
2 回答
912 浏览

hibernate - 遗留数据库结构 Hibernate 映射问题

我在映射以下数据库结构时遇到问题(为简洁起见,仅使用 PK/FK 和一些额外的列进行了缩短:

政策

Policy_Id (PK) ...

风险

Risk_Id (PK) ...

聚会

Party_Id (PK) ...

派对角色

  • PartyRole_Id (PK)
  • Party_Id(FK 非空)
  • Policy_Id (FK)
  • Risk_Id (FK)
  • Party_Role_Type

因此,PartyRole 表可以包含将一方链接到策略的行和/或将同一方链接到风险的行。基本上它是一个多对多连接表,但它结合了多对多关系:Party<->Policy 和一个用于 Party<->Risk 的关系。Party_Role_Type 可以是 POLICY 或 PARTY 并且有效地充当鉴别器来识别该行属于哪个关系。

我试图用 4 个实体来建模这个结构:Policy、Party、Risk、PartyRole。以下是映射: 代码:

所有 java pojo 都设置为匹配此映射,并且在集合中添加或删除对象时正确设置所有关联。策略被认为是一个聚合根,所以当它被 Hibernate 保存时,我想保存与策略关联的各方。当我将一方添加到策略和风险(以及所有相关角色)时,我得到以下异常:

引起:java.sql.BatchUpdateException:完整性约束违规:外键无父;FK_PARTY_ROLE_POLICY 表:PARTY_ROLE

怎么了?这也是映射这种关系的最佳方式吗?是否有机会在使用中间实体的情况下以某种方式映射这种关系?谢谢你的帮助。

0 投票
1 回答
2566 浏览

java - 用于 Hibernate 映射的自定义类加载器

有谁知道一种方法来拦截 Hibernate 为实例化 .hbm.xml 文件中指示的类而进行的调用?我需要一种使用自定义 ClassLoader 来提供实例的方法。一般来说,我不想更改 Hibernate 的类加载,只是映射的“POJO”类的实例化。

在上面的示例代码中,当 Hibernate 想要实例化Bar时,我需要为该类提供自定义代码,而不是依赖于默认的类加载行为。

提前感谢您的任何见解,
saethi

0 投票
2 回答
8280 浏览

java - 使用 @Where 子句的休眠 @OneToOne 映射

这行得通吗 -

这就是我想要做的 - 从表中获取记录,该表notetype_id当前id对象的,并且type_nameOBJECTIVE

我无法使上述映射工作。我在这里做错了什么?