我正在使用一个重构器,我必须将我的类从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;
}
我如何使用注释来实现此功能?请注意,这是一个非常复杂的系统,我希望尽量减少除注释之外的更改。
答案 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
当然,这样做并不优雅,但我需要最简单的方法来转换为注释,而不会破坏实体周围的复杂代码。