【问题标题】:Column without member没有成员的列
【发布时间】:2011-02-28 18:07:09
【问题描述】:

使用 Hibernate,我们试图让它为抽象类创建一个额外的列 - 但我们不能向这个类添加新成员(大规模内存消耗)。我们需要让 Hibernate 创建模式(开发阶段,hibernate.hbm2ddl.auto=update)。

假设我们有一个 MyClass 实体类,其中包含成员 a,b,c,我们希望 Hibernate 也创建一个列 d。此列在内存中不需要,只能在 MyClass 实例的保存/加载期间通过 HQL/SQL 访问。

这个可以吗?

注意事项:
1. Hibernate 3.6.0 Final + Oracle 11g + 纯Java
2.我们使用注解,没有xml文件

【问题讨论】:

    标签: hibernate jpa hbm2ddl


    【解决方案1】:

    将属性添加到类中,但使其变得惰性(使用@Basic(fetch = FetchType.LAZY) 注释)。

    确保您的类在构建时进行了检测:这是工作所必需的。更多详细信息,请访问this chapter of the documentation

    【讨论】:

    • 这将防止急切获取属性,但仍然需要声明属性MyClass.d(在 OPs 示例中)。 MyClass 实例的内存大小确实会通过添加属性d 来增加。
    • 您好 JB Nizet,感谢您的回答,但正如 binil 所说,MyClass 仍然需要一个新成员,占用大量内存...
    • 您是否实际测量过这个简单字段会产生的内存使用差异?这对我来说似乎是过早的优化。
    猜你喜欢
    • 2019-05-27
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多