当前位置: 首页 > 知识库问答 >
问题:

使用xmlHibernate从一个表到多个表的一对一关系

岳景明
2023-03-14

我有3个表customernormalcustomerpreviligedcustomer

cstidcustomer表中的主键,也是normalcustomerpreviligedcustomer表中的主键和外键。我有一个sql,它在这三个表上留下了外部连接,以从三个表中获取不同的列值。

问题:normalcustomer/previligedcustomer表首次为空。这2个表将由其他进程更新。在对Customerobj执行一些udpates并将其保存后,创建了一个新行normalCustomerpreviligedCustomer,其cstid为Customer

注意:对于Customer表中的特定CSTID,存在一行或多行

必需的解决方案:我不希望在normalcustomer/previligedcustomer表中保留一行,除非在normalcustomer/previligedcustomer中存在来自customercstid的一行。

映射:customer.hbm.xml

normalcustomer.hbm.xml

previligedcustomer.hbm.xml

共有1个答案

时才俊
2023-03-14

我想有两种方法可以处理这个问题:

>

  • 您可以有条件地保存它们(手动),而不是使用'cascade=save-update'。

    • 在本例中,您将首先保存Customer实体和requery。
    • 查询将检索现有的NormalCustomer/PrevilegedCustomer记录(如果有的话)(例如,如果其他进程插入了Customer.getNormalCustomer将显示记录)。
    • 根据需要更新子对象

  •  类似资料:
    • 我有两个这样的等级: 和 我想使用hibernate持久化这两个类。字段messagesOfTypeA、messagesOfTypeB和messagesOfTypeC根据消息中的类型字段对消息对象进行分组。 如何使用XML hibernate映射映射MyClass和Message之间的一对多关系?(我正在使用Hibernate 3.6)

    • 我需要在我的数据库中创建多个多对多的关系。 有一个“主”表,我们称之为“项目”。 然后有3个表包含“选项”。 假设我们有:品类、地域、用户。这些保存的唯一信息是项目的名称和ID。 可以将多个类别、区域和用户分配给多个项目。 因此,我有两个选项来创建这种关系: 1)为每个'选项'表创建关系表。每个表包含两列:project_id和category_id、region_id或user_id。使用这种方

    • 我有一个关于Hibernate ManyToMany映射的问题。我有两个类 A 和 B,它们之间的映射是由 Hibernate 解析的 ManyToMany 映射: 用户和组的外键是“A_id”和“B_id”。联接表称为A_B。 现在,我想加上C。我想A_B与C有关系,与C创建多对多关系,A_B我可以称之为A_B_C。 编辑:所以我会创建一个_B实体,A和B和A_B的关系为2 @OneToMany

    • 问题内容: 我有两个表A和Band,A与B之间的关系是A —>一对多—> B 通常,对于A的每条记录,我都有一个B的记录。 我正在尝试编写一个查询,该查询将为我提供A的 唯一 记录列表,其中B中的 记录 超过 一个(多个) 。 我很困惑,因为我只完成了基本的sql查询,而这对我来说似乎很复杂。 可以请一个人指导我正确答案或给我解决方案。 编辑: 好吧,我尝试了下面的事情,它给了我一个错误 从A a

    • 一个特定的表(或类)可以与其他表(或类)有多个一对一以及一对多的关系吗? 例如,现在我正在开发一个银行应用程序,我有一个UserDetails表,它有一个主键作为userId。现在,我将此 userId 用作其他各种表中的外键,例如 Transactions、BalanceInfo、AccountDetails 等,其中 UserDetails 可以作为一对一和多对一关系进行关联。那么,这是正确的

    • 我有一个情况,几个表(TableA 当我使用hibernate逆向工程从这个数据库生成JPA实体时,它会在TableA和TableB for TableC中创建多对一关系。通常要创建一对一的关系,我将TableA主键作为TableC的主键,但由于我有其他表(TableB)也与TableC具有一对一的关系,我不能这样做。因此我不得不在TableA和TableB中使用TableC的外键(这导致了JPA