gpt4 book ai didi

hibernate - 分解一个大的 Hibernate 类

转载 作者:行者123 更新时间:2023-12-02 02:35:42 26 4
gpt4 key购买 nike

我有一个 Hibernate 类,它本质上只是一个围绕大量集合的包装器。

所以这个类(大量简化/伪)类似于:

@实体
公共(public)类 MyClass {

@OneToMany
map 1

@OneToMany
map 2

@OneToMany
map 3

AddToMap1();
AddToMap2();
AddToMap3();
RemoveFromMap1();
RemoveFromMap2();
RemoveFromMap3();
DoWhateverWithMap1();
DoWhateverWithMap2();
DoWhateverWithMap3();

}

等等。这些 map 中的每一个都有一些与之关联的方法(添加/删除/询问/等)。

正如你可以想象的那样,当我添加第 10 个左右的集合时,这个类的规模变得有点荒谬了。

我想做的是类似的事情:


@实体
公共(public)类 MyClass {

类WrappingMap1;

类WrappingMap2;

类WrappingMap3;
}

将所有各种方法都包含在这些类中:

公共(public)类 ClassWrappingMap1 {

@OneToMany
map

添加 map ();
RemoveFromMap();
DoWhateverWithMap();

}

我想也许我可以使用 @Embedded为此,但我似乎无法让它工作(Hibernate 甚至没有尝试将 Map 保留在 wrapperClass 中)。

有没有人做过这样的事情?有什么提示吗?

非常感谢,
内德

最佳答案

Hibernate manual for annotations 声明如下:

While not supported by the EJB3 specification, Hibernate Annotations allows you to use association annotations in an embeddable object (ie @*ToOne nor @*ToMany). To override the association columns you can use @AssociationOverride.



所以你的包装方法应该有效。

首先,您应该检查所有日志文件等是否有任何相关错误。

你可以尝试这样的事情:
  • 在您的大师类 (MyClass)

  • @实体
    公共(public)类 MyClass {

    @嵌入式
    ClassWrappingMap1 map1;
    }
  • 在你的包装类

  • @可嵌入
    公共(public)类 ClassWrappingMap1 {

    @OneToMany
    map map 1;

    }

    请注意 ClassWrappingMap1使用 @Embeddable注解。但是,根据文档,应该不需要 @Embeddable 注释,使用 @Embedded 注释时应该是默认的。

    确保每个 ClassWrappingMap 类映射数据库中的不同列。 ClassWrappingMap 类也不应该有主键( @Id@EmbeddedId 列)。

    关于hibernate - 分解一个大的 Hibernate 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1892969/

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