自学SpringSecurity出现如下问题:
配置如下:
<http auto-config='true' access-denied-page="/error/403.jsp">
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
<authentication-manager >
<authentication-provider user-service-ref="appUserDao">
</authentication-provider>
实体类:
@Entity
public class Authorities {
private String username;
private int id;
private String authority;
public void setAuthority(String authority) {
this.authority = authority;
}
public String getAuthority() {
return authority;
}
public void setId(int id) {
this.id = id;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
}
@Entity
public class Users implements UserDetails{ private static final long serialVersionUID = 1L;
private String username;
private String password;
private boolean enabled;
private int userid;
private Set<Authorities> authority;
public void setUserid(int userid) {
this.userid = userid;
}
@Id
@GeneratedValue
public int getUserid() {
return userid;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public boolean isEnabled() {
return enabled;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
} public Collection<GrantedAuthority> getAuthorities() {
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
for(Authorities a : getAuthority()){
authorities.add(new GrantedAuthorityImpl(a.getUsername()));
}
return authorities;
} public boolean isAccountNonExpired() {
return true;
} public boolean isAccountNonLocked() {
return true;
} public boolean isCredentialsNonExpired() {
return true;
} public void setAuthority(Set<Authorities> authority) {
this.authority = authority;
}
@OneToMany(targetEntity=com.system.model.Authorities.class)
public Set<Authorities> getAuthority() {
return authority;
}
}
出现如下异常:
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Users, for columns: [org.hibernate.mapping.Column(authorities)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:291)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:275)
at org.hibernate.mapping.Property.isValid(Property.java:217)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:464)
at org.hibernate.mapping.RootClass.validate(RootClass.java:236)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1193)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1378)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 23 more因为我觉得SpringSecurity提供UserDetails和UserDetailsService两个接口是给它自己系统用的,所以数据库不用设立authority,isAccountNonLocked等字段,所以我只建了两个表:
Users:字段username,password,userid,enabled
Authorities:字段:username,authority,id
请高手赐教!!!!!!!!
配置如下:
<http auto-config='true' access-denied-page="/error/403.jsp">
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
<authentication-manager >
<authentication-provider user-service-ref="appUserDao">
</authentication-provider>
实体类:
@Entity
public class Authorities {
private String username;
private int id;
private String authority;
public void setAuthority(String authority) {
this.authority = authority;
}
public String getAuthority() {
return authority;
}
public void setId(int id) {
this.id = id;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
}
@Entity
public class Users implements UserDetails{ private static final long serialVersionUID = 1L;
private String username;
private String password;
private boolean enabled;
private int userid;
private Set<Authorities> authority;
public void setUserid(int userid) {
this.userid = userid;
}
@Id
@GeneratedValue
public int getUserid() {
return userid;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public boolean isEnabled() {
return enabled;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
} public Collection<GrantedAuthority> getAuthorities() {
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
for(Authorities a : getAuthority()){
authorities.add(new GrantedAuthorityImpl(a.getUsername()));
}
return authorities;
} public boolean isAccountNonExpired() {
return true;
} public boolean isAccountNonLocked() {
return true;
} public boolean isCredentialsNonExpired() {
return true;
} public void setAuthority(Set<Authorities> authority) {
this.authority = authority;
}
@OneToMany(targetEntity=com.system.model.Authorities.class)
public Set<Authorities> getAuthority() {
return authority;
}
}
出现如下异常:
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Collection, at table: Users, for columns: [org.hibernate.mapping.Column(authorities)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:291)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:275)
at org.hibernate.mapping.Property.isValid(Property.java:217)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:464)
at org.hibernate.mapping.RootClass.validate(RootClass.java:236)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1193)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1378)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 23 more因为我觉得SpringSecurity提供UserDetails和UserDetailsService两个接口是给它自己系统用的,所以数据库不用设立authority,isAccountNonLocked等字段,所以我只建了两个表:
Users:字段username,password,userid,enabled
Authorities:字段:username,authority,id
请高手赐教!!!!!!!!
解决方案 »
- @org.hibernate.annotations.Entity(dynamicUpdate = true, dynamicInsert = true)
- 项目保存时候出错
- 新手问题:struts2.1.6或者其他版本的源码 哪下载 怎么下载
- struts+spring+hibernate+MySQL开发问题
- xfire 在handler中可以修改body中的属性值么?怎么修改
- 在线考试系统中遇到的麻烦。求助。
- 为什么没有javax.ejb这个包?
- 各位帮帮忙看看!
- 为什么????刚学EJB就受措!!!
- java用socket连接.net的服务器失败
- 新手求教,忘大神解决
- 将word转换成xml
终于找到了答案,困扰我一个星期!哎,Hibernate学得不好呀!
看来只要节分了咯+
[/Quote]
http://www.cnblogs.com/wltfighting/archive/2008/09/26/1299602.html
这两个可以看看,应该是你xml少写了一个属性
http://blog.csdn.net/jiafugui/article/details/4595790
祝你好运