如何无缝本地化实体?我有一个带有一些本地化字段的对象(实体),我想以这种方式访问这些本地化字段:entity.getField()。
本地化基于客户端上下文。
为了实现这一点,我将瞬态字段用于本地化字段,并在 onLoad 方法中自己的 Hibernate EmptyInterceptor 实现的帮助下,我正在使用本地化值设置此字段。本地化值保存在单独的表中。它正在工作,但我认为应该有更好的解决方案。
@Entity
public class Card {
private Long id;
@Transient
private String name;
}
@Entity
public class LocalizedCard{
@Id
private Long id;
@ManyToOne
private Card card;
private Language language;
private String localisedName;
}
and the interceptor
public class MyInterceptor extends EmptyInterceptor {
@Override
public boolean onLoad(
Object entity,
Serializable id,
Object[] state,
String[] propertyNames,
Type[] types) {
if (entity instanceof Card) {
Card c = (Card) entity;
c.setName(service.getLocalisedCardName());
return true;
}
return false;
}
}