Caching 字符(3)字段@Id在eclipselink jpa中不可缓存

Caching 字符(3)字段@Id在eclipselink jpa中不可缓存,caching,jpa,eclipselink,glassfish-3,entities,Caching,Jpa,Eclipselink,Glassfish 3,Entities,出于历史原因,我在数据库中有一些带有char(3)主键的表。例如,国家表 当我发现实体具有: String id = "D "; Country c = em.find(Country.class, id); 事后我可以看到: c.getId() --> "D" and not "D " 从数据库中一次又一次地读取实体。由于某些原因,缓存无法工作。我猜缓存中的id是以“D”而不是“D”的形式存在的 我试图设置@Column(length=3),但没有效果 有人知道为什么缓存不能正

出于历史原因,我在数据库中有一些带有char(3)主键的表。例如,国家表

当我发现实体具有:

String id = "D  ";
Country c = em.find(Country.class, id);
事后我可以看到:

c.getId()  --> "D" and not "D  "
从数据库中一次又一次地读取实体。由于某些原因,缓存无法工作。我猜缓存中的id是以“D”而不是“D”的形式存在的

我试图设置@Column(length=3),但没有效果

有人知道为什么缓存不能正常工作吗


感谢Hasan,默认情况下,EclipseLink会从CHAR字段中修剪尾随空格。这可以被禁用

看,,

默认情况下,EclipseLink从字符字段中修剪尾随空格。这可以被禁用

看,,

谢谢,现在它不会一直重新加载。谢谢,现在它不会一直重新加载。
20130423 09:15:14,495 FINEST   query                          Execute query     ReadObjectQuery(name="country" referenceClass=Country )
20130423 09:15:14,498 FINEST   connection                     reconnecting to external connection pool
20130423 09:15:14,498 FINE     sql                            SELECT countryID, countryNAME, countryTELCODE, countryTOPLEVELDOMAIN, countryINTTELPREFIX FROM geo.COUNTRY WHERE (countryID = ?)
bind => [D  ]
20130423 09:15:14,508 FINEST   query                          Execute query ReadObjectQuery(name="country" referenceClass=Country )
20130423 09:15:14,508 FINEST   connection                     reconnecting to external connection pool
20130423 09:15:14,508 FINE     sql                            SELECT countryID, countryNAME, countryTELCODE, countryTOPLEVELDOMAIN, countryINTTELPREFIX FROM geo.COUNTRY WHERE (countryID = ?)
bind => [D  ]