java – 从数据库中检索的实体与查询中的情况相同
发布时间:2020-12-15 01:34:35 所属栏目:大数据 来源:网络整理
导读:我的数据库包含下表: 表: country { code varchar(255) not null primary key}; 类: @Entitypublic class Country { @Id @Column(name = "code") private String mCode; public String getCode() { return mCode; } public void setCode(String code) { m
我的数据库包含下表: 表:
类:
样本表行:
当我使用以下CrudRepository检索国家/地区时:
第一种情况:
它将在我的休息api中给出以下结果:
第二种情况:
它将在我的休息api中给出以下结果:
第三种情况:
它将在我的休息api中给出以下结果:
我还使用调试器检查了相同的行为,发现我在内存中的对象实际上具有相同的行为. 我想要的:我希望返回的数据与数据库中的数据相同. 最佳答案
正如@Bedla在评论中已经暗示的那样,您可能在数据库中使用不区分大小写的varchar数据类型.但是,这不建议用于Hibernate中的主键(通常),因为Hibernate在引用持久化上下文中的实体(如果启用了二级缓存)时依赖于id属性值唯一性.
例如,在通过“USA”加载实体然后通过“usa”加载实体(或者在“USA”已经加载之后合并分离的“usa”之后),在同一个持久化上下文中,您可能最终得到两个不同的实例在持久化上下文中,意味着它们将被单独刷新,从而覆盖彼此的更改等. 而是在数据库中使用区分大小写的数据类型,但允许通过忽略大小写进行搜索:
PS国家/地区代码一般不适合主键,因为它们可以更改. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |