我正在尝试从休眠4迁移到休眠5。我仍然在Java 7中。
我的应用程序在最新版本4.12.03上可以正常使用,并且我没有遇到任何映射错误。 但是,当我尝试转到版本5(例如:5.0.12)时,遇到此映射错误:
org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [from User where mail =:userMail]
at fr.lis.xper3.security.dao.UserDao.read(UserDao.java:202)
at fr.lis.xper3.security.dao.UserDao.read(UserDao.java:157)
at fr.lis.xper3.security.services.UserManagementService.read(UserManagementService.java:91)
at fr.lis.xper3.security.Xper3AuthenticationProvider.authenticate(Xper3AuthenticationProvider.java:35)
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:174)
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:199)
我的Sql表是:
CREATE TABLE `User` (
`id` bigint(20) NOT NULL,
`admin` tinyint(1) NOT NULL,
`familyName` varchar(255) NOT NULL,
`firstName` varchar(255) NOT NULL,
`mail` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updateTime` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我的实体是:
@Entity
@Table(name = "User")
public class User implements Serializable {
@Id
@GeneratedValue
private long id;
@Column(nullable = false)
private String familyName;
@Column(nullable = false)
private String firstName;
@Column(nullable = false, unique = true)
private String mail;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private boolean admin = false;
...
}
还有我的DAO:
public static User read(Session session, String userMail) throws HibernateException {
String queryString = "from " + User.class.getSimpleName() + " where mail =:userMail";
return (User) session.createQuery(queryString).setParameter("userMail", userMail).uniqueResult();
}
谢谢您的帮助。
西尔万