gpt4 book ai didi

java - 与同一基本映射器的多个关联

转载 作者:行者123 更新时间:2023-12-02 10:32:09 25 4
gpt4 key购买 nike

我有一个用于版本信息定义的基本 resultMap,如下所示:

   <resultMap id="VersionedEntityMapper" type="org.chu.wit4h.db.AbstractVersionedEntity">
<result property="version" column="version"/>
<result property="lastModified" column="lastModified"/>
<result property="lastModifier" column="lastModifier"/>
</resultMap>

然后是一些实体映射器扩展它:

   <resultMap id="Entity1Mapper" type="org.Entity1" extends="VersionedEntityMapper">
<result property="name" column="name" />
<result property="firstName" column="firstName" />
</resultMap>

<resultMap id="Entity2Mapper" type="org.Entity2" extends="VersionedEntityMapper">
<result property="room" column="room"/>
</resultMap>

一切都工作正常,直到我做到了:

   <resultMap id="Entity3Mapper" type="org.Entity3">
<id property="id" column="id" />
<association property="info" javaType="org.Entity1" resultMap="Entity1Mapper"/>
<association property="location" javaType="org.Entity2" resultMap="Entity2Mapper"/>
</resultMap>

因此,列名 version、lastModified 和 lastModifier 发生冲突。我可以在 SQL 语句中为它们起别名,但如何将前缀传递给内部映射器?

最佳答案

为了使用现有的 resultMap 映射关联实体,您需要向结果中关联实体的所有列添加一些前缀,并通过 columnPrefix 指定该前缀> 属性。

在上面的示例中,在选择 Entity3 的查询中,Entity1 的字段应命名为 entity1_name、entity1_first_name、entity1_version 等。

应该修改映射:

<resultMap id="Entity3Mapper" type="org.Entity3">
<id property="id" column="id" />
<association property="info" javaType="org.Entity1" resultMap="Entity1Mapper"
columnPrefix="entity1"/>
...
</resultMap>

关于java - 与同一基本映射器的多个关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53553810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com