我有一个奇怪的错误: 我有一个使用Hibernate的注释类。一切都很好,直到我开始介绍这样的日志记录:
@Entity
@Table(name = "GROUP_TABLE")
public class Group {
private static final Logger logger = LoggerFactory.getLogger(Group.class);
产生的错误是:
[ERROR]引起:org.hibernate.MappingException:无法确定 输入:org.slf4j.Logger,在表:container,用于列: [org.hibernate.mapping.Column(记录器)]
在我的理解中,静态字段在这种情况下应该没问题。那么为什么hibernate会尝试创建一个“logger”列?
我的依赖项是log4j 1.2.17,slf4j-api 1.7.7和slf4j-log4j12-1.7.7。
谢谢!
答案 0 :(得分:5)
因为您的类被注释为@Entity
和@Table
,所以Hibernate假定所有字段(无论修饰符)都映射到数据库列。
Hibernate并不关心你的字段是static
还是final
(它们是Java结构),它关心的是它不能将字段值映射到a数据库列。将您的记录器标记为@Transient
,Hibernate将忽略它。