问题标签 [dozer]
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.
java - 推土机:从基类中删除字段
我有很多扩展单个基类的类。在进行推土机映射时,我想做的是为基类创建一个映射,并在映射任何子类时引用该映射。
例如:
所以当我做类似的事情时
生成的 customMap 排除了 valueA。
java - Dozer Mapping 和 Hibernate 延迟初始化
我有以下推土机映射:
com.company.xx.xx.model.MyClass com.company.xx.xx.model.MyClassToMap
远方 _
客户 客户
我用休眠加载 MyClass。但我有一个延迟加载客户。我不从客户那里加载所有东西。但是映射想要映射来自客户的所有属性,所以会抛出一个惰性初始化异常。
我如何告诉推土机只映射客户而不是客户的所有字段?
java - 使用 Dozer 映射值对象
我正在使用 Dozer 将我的 DTO 映射到 JPA 实体。
用例之一是已经存在的实体的 DTO 表示到达 WS,然后我使用 JPA 找到实体并使用 Dozer使用map(source, destination)映射方式将 DTO 映射到找到的实体上(不是地图(来源,目的地类))。
我的实体(例如地址)上有一些值对象(具有经典的不可变值对象语义)作为@Embeddables。问题是,我希望推土机在设置时总是创建一个新的地址实例,例如:员工对象,而不是映射到已经存在的地址实例。
因此,使用以下课程:
我希望推土机始终使用新的地址实例调用 setAddress(),而不是尝试使用 getAddress() 映射新的地址字段。
有没有办法做到这一点?
java - 使用 Java、Dozer 和 Hibernate 映射和更新到数据库的 DTO
我正在使用 Dozer 将 Hibernate 实体映射到它们的 DTO。一个简化的示例类如下:
现在映射工作正常,但我在尝试进行更新时遇到问题。假设我的数据库中有一个角色(1,“管理员”)。我的视图首先生成带有更新字段的 DTO:
最终,持久化 Role 的类接收 DTO 并通过 Dozer 将其转换为 Entity 类以持久化更改:
此时,我的角色实体已经丢失了它的ID,大概是因为ID列被定义为自增,而我显然无法更新null-ID实体。
那么我应该如何解决这个问题,以便 ID 和更新的字段都映射到实体?我总是可以将实体对象带入休眠状态,并使用 DTO 中的字段更新其每个字段并将其保存回来,但这会破坏使用 Dozer 的全部目的。
谢谢你的帮助。
apache-flex - Hibernate Map 一个没有关系的对象
我有这样的关系:
一个人有一个或多个地址。一位客户有一个或多个地址。
人员、客户和地址是单独的表。
我曾经用@OneToMany 关系来做到这一点。这给我带来了问题,因为我们的 flex 客户端正在向我发送对象,这些对象是在客户端中创建的,并且必须在数据库中创建。
如果客户端向我发送一个引用相同地址的人和客户,休眠将创建两个地址对象,因为这两个地址对象不是相同的 java 对象(不是相同的指针)。
这是一个由 BlazeDS 和 Dozer 引起的问题,它们在发送到服务器时会创建新对象。
所以我想要的是人员和客户对象中没有关系的地址 ID,因此休眠不会创建对象。但是当我读取一个人对象时,我想根据存储的地址 id 填充一个临时地址对象。
有谁知道这是否可能?
java - 防止 Dozer 触发 Hibernate 延迟加载
我正在使用 Spring 事务,因此当 POJO 到 DTO 转换发生时,事务仍然处于活动状态。
我想防止 Dozer 触发延迟加载,以便永远不会发生隐藏的 sql 查询:所有获取都必须通过 HQL 显式完成(以获得对性能的最佳控制)。
这是一个好的做法(我在任何地方都找不到它的文档)?
如何安全地做到这一点?
我在 DTO 转换之前试过这个:
我不知道事务会发生什么,但是 Hibernate 会话没有关闭,延迟加载仍然发生。
我试过这个:
它可以防止延迟加载,但是直接在应用程序层(在我的项目中称为“外观”)中操作会话是一种好习惯吗?我应该害怕哪些负面影响?(我已经看到涉及 POJO -> DTO 转换的测试不能再通过 AbstractTransactionnalDatasource Spring 测试类启动,因为这些类试图触发不再链接到活动会话的事务的回滚)。
我还尝试将传播设置为 NOT_SUPPORTED 或 REQUIRES_NEW,但它会重用当前的 Hibernate 会话,并且不会阻止延迟加载。
json - 将(智能)GWT 覆盖类型从客户端传递到服务器并使用 Hibernate 持久性
我们的项目利用 gilead 使用 GWT RPC 模型将模型对象传递给客户端。我们面临的问题是,随着我们模型的增长/变化,在客户端对 JSON 进行序列化以进行处理变得越来越成为一个问题。
我正在考虑使用覆盖类型作为我们实体对象的客户端表示。
将其与 Hibernate 结合使用时,一般方法是什么,您是否必须重新创建对象服务器端然后持久化?
是否可以将客户端对象传回,然后使用 Dozer 映射到服务器端 Entity ?
谢谢, 安德罗斯
java - 集合映射
假设我有以下课程:
我想用 Dozer 将 A1 类映射到 A2,其中 A1.bList 包含 B1 对象,而 A2.bList 仅包含 B1 对象的 ID。
映射会是什么样子?
谢谢你。
java - 自定义推土机映射
我正在尝试使用推土机来转换
到一个实例:
在Java代码中,我会像这样执行转换
默认情况下,Dozer 不执行此转换,因为Target
没有foos
属性(只是一个 getter)。
实际上,我有很多这样的属性需要映射。一种选择是告诉 Dozer直接映射私有字段,但这并不完全令人满意,因为:
- 我将需要在 Dozer XML 配置中按名称指定要以这种方式映射的每个字段
- 访问私有字段是不好的
有没有更好的办法?
dozer - 如何使用 Dozer 将布尔值转换为字符串?
我是推土机的新手,我正在尝试将字符串映射到布尔值,反之亦然。谁能告诉我推土机支持这个还是我必须创建一个自定义转换器。该字符串将包含真或假,因此将直接映射。另外我使用的是 Dozer API 而不是 XML 配置。谢谢你的帮助