如何在注释中使用元素实现idbag?

时间:2018-03-21 18:34:37

标签: java hibernate jpa hibernate-mapping

我正在使用一个重构器,我必须将我的类从hibernate xml更改为注释(JPA注释首选但hibernate没问题)。我的一个实体使用了hibernate idbag功能,结合了元素功能和连接表。

hibernate xml:

c[i]='\0';

该课程如下:

<class name="com.my.package.EntityA" table="table_a">
        <id name="id" column="table_a_id" type="long" unsaved-value="null">
        <generator class="sequence">
            <param name="sequence">table_a_seq</param>
        </generator>
        </id>
        <idbag name="entityBIds" table="table_a_b" cascade="all" lazy="false">
        <collection-id column="table_a_b_id" type="long">
            <generator class="org.hibernate.id.SequenceGenerator">
                <param name="sequence">table_a_b_seq</param>
            </generator>
        </collection-id>
        <key column="fk_table_a_id" />
        <element column="fk_table_b_id" type="long"/>
    </idbag>
</class>

架构:

public class EntityA {

    Long id;

    Collection<Long> entityBIds;
}

我如何使用注释来实现此功能?请注意,这是一个非常复杂的系统,我希望尽量减少除注释之外的更改。

2 个答案:

答案 0 :(得分:1)

您想要的是与连接表的一对多关系。 请参阅https://en.wikibooks.org/wiki/Java_Persistence/OneToMany§1.5加入表

您的表格模型对于Select Case ((val(cell.Offset(0, -2).Value) - val(cell.Offset(0, -1).Value)) - (val(cellX.Offset(0, -2).Value) - val(cellX.Offset(0, -1).Value))) table_a两个表都不实用。但是我猜想改变它会很昂贵。

我希望你的java模型更灵活...... 定义只有table_a_b的{​​{1}}。在EntityB中有一个Long id并调整 getEntityBIds / setEntityBIds / addEntityBId /等的实现来访问它并根据需要进行转换。当然希望字段EntityA是私有的,因此不在实体之外使用。

答案 1 :(得分:0)

我发现了答案!

is_it_true

当然,这样做并不优雅,但我需要最简单的方法来转换为注释,而不会破坏实体周围的复杂代码。