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

了解Hibernate @Type批注

纪正德
2023-03-14
问题内容

从官方的hibernate文档中:

@
org.hibernate.annotations.Type会覆盖所使用的默认hibernate类型:由于Hibernate可以正确推断出该类型,因此通常不必这样做

文档中有一个示例:

@Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType")
@Columns(columns = {
    @Column(name="r_amount"),
    @Column(name="r_currency")
})
public MonetaryAmount getAmount() {
    return amount;
}

我不明白
我们声明,@Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType")但是方法的返回值具有类型MonetaryAmount

我希望在类型注释中声明的类型和返回值的类型应该是相同的类型。

有人无法解释在@Type注解中声明的类型的实际用途。为什么它与返回的类型不同?


问题答案:

返回类型和之间有区别@Type

@Type
注释用于hibernate,即告诉您要存储在数据库中的数据类型。

让我们举一个简单的例子:

@Type(type="yes_no")
private boolean isActive;

这里的返回类型为,boolean但是存储在数据库中的值将采用YN格式,而不是true/ false

您可以用相同的方式将对象映射到数据库列。请点击这里获取更详细的解释。



 类似资料:
  • 问题内容: 我试图了解JPA 中注释的属性。我在下面的示例中创建了一个客户具有订单列表的示例: 现在,当我使用Hibernate生成表时,我看到Hibernate仅创建了2个表: 另外,如果我尝试保存客户和一些订单,我会在下面看到由Hibernate生成的DML语句: 为什么Hibernate试图在TBL_ORDER中插入和更新记录,而不仅仅是运行单个插入查询? 现在,如果我删除mapledBy属

  • 问题内容: 我是一个Android初学者。在尝试管理活动生命周期的代码时,我遇到了新问题。 我对代码理解得很好,但是在ActionBar SuppressLint中却给出了错误。当我双击它时,正在添加。这是什么意思? 问题答案: 是Android Lint工具使用的注释。 当代码中的某些内容不是最佳的或可能崩溃时,Lint会告诉您。通过传递,您将抑制所有警告,这些警告会告诉您是否正在使用在您的设备

  • 问题内容: 我在这里使用教程来了解JAXB。 当作者开始创建文档的根时,作者开始如下: 尽管我将手动生成类而不是让Eclipse生成类,但我将提供一个jar文件(未打包在其中,而是在包含jar文件的文件夹中),以便在我的应用程序启动时验证XML文档是否已被篡改。 因此,在XSD文件中,将会是 因为上面已将其声明为?? 问题答案: 我建议使用包级别注释为模型指定名称空间限定。程序包级别的注释位于一个

  • 问题内容: 有一个结构。我想以这种方式链接这三个实体:公司应包含ID,公司名称和部门列表,每个部门都有一个工人列表,ID和部门名称。每个工人都有名字,身份证。 我试图与一对多和多对一建立联系,但未成功。 公司 部 工人 我从开始: 它填充公司,但不填充其他表,也没有创建任何联接(映射)错误: 问题答案: 除了Glenn Lane的答案中提到的级联,您还需要了解双向关联是如何工作的。 它们有一个所有

  • 本文向大家介绍hibernate批量操作实例详解,包括了hibernate批量操作实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了hibernate批量操作的方法。分享给大家供大家参考,具体如下: Hibernate的批量处理 Hibernate完全以面向对象的方式来操作数据库,当程序里以面向对象的方式操作持久化对象时,将被自动转换为对数据库的操作。例如调用Session的dele

  • 本文向大家介绍快速了解Hibernate中的Session,包括了快速了解Hibernate中的Session的使用技巧和注意事项,需要的朋友参考一下 Hibernate中的Session是一级缓存,可以理解为进程级(是线程吧)的缓存,在进程(是线程吧)运行期间一直存在。 session可以理解为一个可以操作数据库的对象,该对象中有操作数据库的方法。 在Java里面,缓存通常是指Java对象的属性