gpt4 book ai didi

java - JPA(Hibernate)中注释字段和方法之间的区别?

转载 作者:行者123 更新时间:2023-12-01 05:55:01 26 4
gpt4 key购买 nike

JPA 规范或官方文档中是否有关于某些 JPA 实现的任何声明,这些声明描述了我们注释实体的方法和注释实体的字段时的行为?

就在几个小时前,我遇到了一个丑陋的问题:我将 JPA(通过 Hibernate,但在 Java 代码中没有任何 Hybernate 特定的内容)与 MS SQL Server 一起使用。我将所有注释放在实体的字段上(直到今天我更喜欢这种风格)。

当我查看数据库时,我发现所有应该是外键并且应该包含一些整数(ids)的表列实际上都具有 varbinary(255, null) 类型并包含以下哈希值一些东西(我不知道那是什么,但它看起来像一个典型的 MD5 哈希值)。

最令人沮丧的是应用程序运行正常。但偶尔(在更新时)我遇到 MS SQL 异常,表明我尝试插入太长的值并且数据无法被截断。

最终(作为实验)我从实体字段中删除了所有注释,并将它们全部放在方法上。我重新创建了数据库,所有表都包含完美的 FK 列。这些列存储整数(id,如 1、3、4 ...)。

那么,有人可以解释一下那是什么吗?

我找到了this SO thread公认的答案是首选方法是在字段上添加注释。至少对于我的具体案例,我可以说这不是真的。

最佳答案

JPA 允许对持久类的数据进行两种类型的访问。字段访问意味着它将实例变量(字段)映射到数据库中的列,属性访问意味着使用 getter 来确定将映射到数据库的属性名称。它将使用什么访问类型取决于您放置 @Id 注释的位置(在 id 字段或 getId() 方法上)。

关于java - JPA(Hibernate)中注释字段和方法之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304556/

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