使用Logger时Hibernate MappingException

时间:2014-08-05 17:02:55

标签: java hibernate slf4j

我有一个奇怪的错误: 我有一个使用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。

谢谢!

1 个答案:

答案 0 :(得分:5)

因为您的类被注释为@Entity@Table,所以Hibernate假定所有字段(无论修饰符)都映射到数据库列。

Hibernate并不关心你的字段是static还是final(它们是Java结构),它关心的是它不能将字段值映射到a数据库列。将您的记录器标记为@Transient,Hibernate将忽略它。