问题标签 [many-to-one]
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.
hibernate - Hibernate LazyInitializationException:未能延迟初始化角色集合
我有一个 Web 服务,它本质上是一个 DAO 的包装器。我正在调用 Web 服务/DAO 来请求实体集合。
“父”实体类包含“子”实体对象的集合,即一对多关系。获取“父”实体集合(即 myDAO.findAll())的 DAO 方法调用没有问题返回,但是 Web 服务调用的最终结果是以下异常:
一些背景资料:
我有两个实体,Station 和 Observations。Station 实体(“父级”)包含 Observations 对象(“子级”)的集合。
Station 实体的 DAO 类,StationDao 的调用方法 findAll() 具有以下代码:
在这种情况下,我对在返回父项集合之前完全获取与父项(站)相关的子项(观察)集合不感兴趣。然而,在响应中返回父(站)对象的集合之前,似乎有一些尝试完全获取这些子(观察)对象,但由于原始会话不再可用,因此失败了。
谁能建议我如何解决这个错误?也许有一种方法可以在请求的整个生命周期内保持会话?
在此先感谢您的帮助!
- 詹姆士
hibernate - 休眠多对一关系删除未按预期工作
我有3个表如下:
- 用户有用户 ID
- UserProductEntitlement 具有 userId 和 productId 以及一个布尔值
- 产品有productId
这是我的班级代表:
因此,最初当用户登录时,他的所有权利都会被加载。但是当我尝试从 viewableProduct 集中删除 ProductEntitlement 时,hibernate 会触发更新语句:
我这里有两个问题:
- 为什么它触发更新而不是删除?
- 这是更大的问题——userId=? 而不是 userId=? 和productId =?
对此的任何帮助/建议将不胜感激。
c# - 在 C# 中使用 XML 序列化进行多对一关系的良好设计需要帮助
假设我有一些数据形式为
使用下面的类来表示它
我想使用 XML 序列化来读取/写入数据,而不是使用实体框架和 SQL。使用实体框架,我可以定义多对一关系,这样每个产品只会在数据库中存储一次,每个订单只会引用它。将上述代码与 XML 序列化一起使用,据我了解,每个产品都会存储许多副本(在内存和 XML 文件中)。
为了解决这个问题,我可以只存储产品 ID 列表而不是产品本身,然后将单独的“产品”集合序列化到另一个 XML 文件中——但这并不是一个干净的解决方案。
另一个想法是有一个包含客户和产品列表的 RepositoryClass。然后,客户只需要存储 productID,当您从 repo 请求“客户”时,它会处理查找和构建上述对象,因此我的其余代码不必担心数据是如何存储的. 这听起来像是一个更好的解决方案吗?你会怎么做?
解决方案的另一个要求是,我希望尽可能轻松地将解决方案连接到 GUI 以直接编辑属性(这实际上就是为什么我希望有一种方法可以将它全部存储在一个我可以绑定到的 XML 文件中WPF 窗口)。
提前感谢您的想法和建议!
hibernate - Hibernate 中自引用类的问题
我有一个模拟父/子结构的实体,这是我的休眠映射文件:
这是数据:
我的问题是,每当我尝试在视图中显示对象时,多对一关联都会产生异常:
注意:我使用 Hibernate、Spring 和 JSF
感谢您的帮助
hibernate - 休眠插入级联不插入外键
我有两个实体:
我正在尝试通过执行以下操作插入文件(以及随后的标签):
然后我使用以下方法将文件插入我的 DAO:
在我的日志中,我看到一个插入到我的“文件”表中,两个插入到我的标签表中,但是,我的标签表中指向我的文件表 (file_id) 的外键为 NULL。
我可能做错了什么?
sql - 一对多和多对一关系的区别
一对多和多对一关系之间的真正区别是什么?它只是颠倒的,有点?
除了这个主题之外,我找不到任何关于这个主题的“易于理解”的教程:SQL for Beginners: Part 3 - Database Relationships
entity-framework - EF 4.0 LINQ 一对多/多对一
刚开始使用 LINQ 和 EF。
我在以下配置中有一组表:
PublicUtility (UtilityCode) * ----> 1 (UtilityCode) Utility (UtilityCode) 1 -----> * (UtilityCode) UtilityDetail
我在 SQL 中有一个查询。根据其他一些业务规则,此查询将返回 1 值或 NULL。
SELECT
@UtilityCode = UtilityDetail.UtilityCode
从
UtilityDetail
INNER JOIN PublicUtility ON
PublicUtility.SubdivisionCode = @SubdivisionCode AND
PublicUtility.Year = @PublicUtilityYear AND
PublicUtility.UtilityCode = UtilityDetail.UtilityCode
WHERE
UtilityDetail.DebtPurposeCode = @DebtPurposeCode
我如何使用 LINQ to 实体重写它?
java - Hibernate 多对一外键默认 0
我有一个表,其中父对象具有可选的多对一关系。问题是该表设置为将 fkey 列默认为 0。
选择时,使用 fetch="join" 等 - fkey 上的默认值 0 被用于反复尝试从另一个表中选择 ID 0。当然这不存在,但我怎么能告诉 Hibernate 将值 0 视为与 NULL 相同 - 在获取不存在的关系时不要循环 20 多次?
mysql - mysql多对一和分组通过给出不寻常的结果
我对以下相当简单的设置有困难:
一些数据:
和产生异常结果的sql:
导致(错误)输出
现在,事实证明只有四个“invoice_item”行,我不明白为什么 mysql 没有正确分组。
编辑
我知道我可以做这样的事情:
但我想知道我在第一个查询中是否做错了什么 - 我无法立即看到为什么第一个查询给出的结果不正确!:(
performance - 性能多对一关系
我有两个表,具有多对一关系,从数据库读取所有数据时出现性能问题。
ClassA 是 ClassB 的父级
配置类A
配置类 B
我想要一个 classA 对象的列表,其中 ClassA 对象一次包含一个 classB 对象。
从ClassA请求所有数据时,效果很好,但是速度很慢,因为对于ClassA的每一个条目,都会执行一条sql语句(select * from ClassB where Id==ClassA.ID)来获取B类。设置惰性标志为真,没有解决方案,因为我需要 ClassB 的数据。
有人知道如何获得 NHibernate 以便以更好的性能读取所有数据吗?
谢谢 !