当前位置: 首页 > 面试题库 >

创建一个自定义的Hibernate UserType-isMutable()是什么意思?

蔡鸿骞
2023-03-14
问题内容

我在Hibernate中为项目创建自定义UserType。直到我使用isMutable方法之前,它一直相对简单。我正在尝试从合同角度弄清楚这种方法的含义。

这是否意味着我要为其创建UserType的类是不可变的,还是意味着持有对该类实例的引用的对象将永远不会指向其他实例?

我在Hibernate社区Wiki中找到了一些示例,它们返回true,因为对象本身是可变的-
http: //www.hibernate.org/73.html。

社区Wiki中的其他示例返回false却没有说明原因,即使它们也是可变的。

我已经检查了JavaDoc,但也不是很清楚。

从JavaDoc for
UserType:

public boolean isMutable()
    Are objects of this type mutable?
    Returns:
        boolean

从JavaDoc输入Type:

public boolean isMutable()
    Are objects of this type mutable. (With respect to the referencing
    object ... entities and collections are considered immutable because
    they manage their own internal state.)
    Returns:
        boolean

问题答案:

Hibernate会将标记为“可变”的类型视为可以更改(即需要UPDATE) 而无需
指向新引用的类型。如果您为Hibernate加载的属性分配新的引用,即使类型是不可变的,Hibernate也会识别出这种情况-
这种情况一直都发生在例如String字段中。但是,例如,如果您有一个StringBuilder字段并将其标记为 不可变,则 Hibernate将
不会 注意到您是否修改了StringBuilder。

有关更多详细信息和示例项目,请参见此博客文章。



 类似资料:
  • 问题内容: 一个项目需要大量使用以下Jackson注释组合。因此,有没有一种方法可以创建另一个注释来避免丑陋的复制/粘贴: 更新: 我已经尝试过了,但是没有成功:-( 问题答案: 使用解决问题:

  • 所以我有了正确的实现,它被调用得很好,但是没有方法..所以,如果我不能传递任何要做出决定的东西,它如何做出决定呢? 有一个,但我无权访问它? 我需要有多个上下文(显然加载了不同的配置),在运行时根据自己的逻辑从中进行选择。 我已经找到了一个简单地创建LoggerContexts并配置它们的解决方案,但我只是不明白这种替代机制的意义所在。

  • 问题内容: 好的,这可能有点钝了,但是Node.js的目的/需求是什么 我主要通过CloudFoundry注意到了它,但是不太确定它应该做什么。但是我猜想它可能相当大,因为为什么VMWare会支持它。 提前致谢。 问题答案: 这是一个… 高效且100%事件驱动的IO框架, 足够灵活,可以使用它可以找到的最佳基础操作系统功能, 以高级编程语言(客户端最有可能使用的相同语言)展示API, 在该语言的最

  • 我今天遇到了,我不确定我是否理解它的用途。。。在Spring文档中,它说 允许同一类处理多个请求类型的控制器实现。这个类的子类可以用表单的方法处理几种不同类型的请求 在另一个网站上,他们说 它将多个请求处理方法聚合到单个控制器中,因此相关功能可以很容易地保持在一起。 我仍然不明白扩展与下面的相比是更好还是不同?或者,更像是旧版本Spring的遗留产品?我觉得我有一些基本的误解。。。

  • 我有一个datadog计数度量,我想创建一个新的度量,从中显示度量上两个代理点之间的差异,因此我可以看到点之间的变化。 有没有办法使用datadog仪表板从另一个指标创建一个指标。

  • 创建几个objects可以让我们避免表名列名拼写错误、重复等。我们需要两个表:一个用来保存城市的信息,另一个用来保存某天的天气预报。第二张表会有一个关联到第一张表的字段。 CityForecastTable提供了表的名字还有需要列:一个id(这个城市的zipCode),城市的名称和所在国家。 object CityForecastTable { val NAME = "CityForeca