学习springmvc时遇到的坑,记录下来
1.springmvc与hibernate版本的问题,导致生成sessionFactoryBean,使用packagesToScan,注解,自动装配遇到了各种问题
spirngmvc3.0.5可以和hibernate3.5.5一起很好的使用,之前使用hibernate3.1-3.3还有hibernate4.1均被无限坑死,各种报错,各种无法转换,各种找不到类等等,使用springmvc3.1也同样不能写这些hibernate的版本配合,主要是需要使用org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean,如果你使用原始的org.springframework.orm.hibernate3.LocalSessionFactoryBean则没有这些问题
2.使用注解生成实体
sessionFactory中的配置如下
<property name="packagesToScan"><list><value>com.amigo.*</value></list> </property>
之前value一直是com.amigo.model.*
结果,果断被深深的坑了一把,一直报错:org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [from User],实体没有映射
直到网上找到一哥们在贴子里说要把model去掉,才解决这个BUG
实体类的代码如下:
/** * 实体类 */
@Entity
@Table(name="user") //指定映射的表名
public class User {
@Id
@GeneratedValue
@Column(name = "id", nullable = false)
private int id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
@NotEmpty(message = "用户名不能为空")
public String getUsername() {
return username;
}
@Required
public void setUsername(String username) {
this.username = username;
}
@Size(min = 1, max = 10, message = "密码的长度应该在1和10之间")
public String getPassword() {
return password;
}
@Required
public void setPassword(String password) {
this.password = password;
}
}