JPA 规范或官方文档中是否有关于某些 JPA 实现的声明,这些声明描述了我们注释实体方法和注释实体字段时的行为?
就在几个小时前,我遇到了一个丑陋的问题:我将 JPA(通过 Hibernate,但在 java 代码中没有任何特定于 Hybernate 的东西)与 MS SQL Server 一起使用。我将所有注释都放在实体的字段上(直到今天我更喜欢这种风格)。
当我查看数据库时,我发现所有应该是外键并且应该包含一些整数(id)的表列实际上都有varbinary(255, null)
类型并且包含一些东西的哈希值(我不知道那是什么,但它看起来像一个典型的MD5 哈希)。
最令人沮丧的是该应用程序运行正常。但偶尔(更新时)我得到 MS SQL 异常,指出我试图插入太长的值并且无法截断数据。
最终(作为实验)我从实体字段中删除了所有注释并将它们全部放在方法上。我重新创建了数据库,所有表都包含完美的 FK 列。这些列存储整数(ID,如 1、3、4 ...)。
那么,有人可以解释那是什么吗?
我找到了这个 SO 线程并且它被接受的答案说首选方法是将注释放在字段上。至少对于我的具体情况,我可以说这不是真的。