我的dto中有一对多的关联,
家长DTO:问题
儿童DTO:历史
问题1:
表示一个问题记录有很多历史记录,我正在使用JPA2.x和hibernate, 我用延迟提取方法/模式绑定实体。有些地方我想偷懒取材...... 有些地方我不想懒惰的取物甚至不是egar。意味着我不想要数据收集本身。我只需要父类列表,即使我调用了getHistories()方法,它也不应该在少数几个地方进行延迟提取....如何使用entityManager来避免延迟提取.....即使集合设置为懒惰的获取模式.....?
问题2:
我需要使用mysql编码/解码函数加密问题。插入时加密值并保存。当选择解码内容.....
解决方案可以是映射或条件查询......?
提前致谢....!
答案 0 :(得分:0)
问题1:
您的要求毫无意义。如果您不想访问历史记录,请不要致电getHistories()
。如果您访问历史记录集合,要么附加了您的问题,并且将加载该集合,或者它已分离,您将获得延迟加载例外。
问题2: 见http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/annotations/ColumnTransformer.html。 javadoc中的示例正是您想要做的。
答案 1 :(得分:0)
对于问题1,您需要做两件事,
如果您希望您的父子实体被选中'懒惰',则使用fetch = lazy注释bir-directional字段。只要你不加载或触摸'其中一个延迟加载的字段。
如果您希望选择父母子实体,那么请将双向关联中的字段分配为fetch = eager。
如果你想要某些地方我甚至不想懒惰的取物甚至不是egar'那么你必须在代码时间决定是否在父母之间建立关系 - 子实体,如果你没有,那么就不要映射双向关联。您 CAN 创建多个实体类来映射不同的协议,甚至是没有关联的实体。