Back Forum Reply New

One-to-many relationship Hibernate Problem

I'm having Spring intergrate Hibernate project.But I add one-to-many in project I got error

My SQL Script:

Code:
create table users(     username varchar(50) not null primary key,     password varchar(50) not null,     enabled boolean not null     );
create table authorities (     username varchar(50) not null,     authority varchar(50) not null,     constraint fk_authorities_users foreign key(username)references users(username));
UserVO class map table User

Code:
@Entity
@Table(name=quot;usersquot;,schema=quot;publicquot;)
public class UserVO implements UserDetails,Serializable{

/*** */
private static final long serialVersionUID = 1L;

private String username;
private String password;
private boolean enabled;

private Setlt;AuthorityVOgt;authorityList = new HashSetlt;AuthorityVOgt;();

@Id
@Column(name=quot;usernamequot;,length=50,nullable=false)
@Override
public String getUsername() {
// TODO Auto-generated method stub
return username;
}

public void setUsername(String username) {
this.username = username;
}

@Column(name=quot;passwordquot;,length=50,nullable=false)
@Override
public String getPassword() {
// TODO Auto-generated method stub
return password;
}

public void setPassword(String password) {
this.password = password;
}

@Column(name=quot;enabledquot;,nullable=false)
@Override
public boolean isEnabled() {
// TODO Auto-generated method stub
return enabled;
}public void setEnabled(boolean enabled) {
this.enabled = enabled;
}@OneToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL,mappedBy=quot;userquot;)
public Setlt;AuthorityVOgt; getAuthorityList() {
return authorityList;
}

public void setAuthorityList(Setlt;AuthorityVOgt; authorityList) {
this.authorityList = authorityList;
}

@Transient
@Override
public Collectionlt;GrantedAuthoritygt; getAuthorities() {
// TODO Auto-generated method stub

return null;
}

@Transient
@Override
public boolean isAccountNonExpired() {
// TODO Auto-generated method stub
return false;
}
@Transient
@Override
public boolean isAccountNonLocked() {
// TODO Auto-generated method stub
return false;
}

@Transient
@Override
public boolean isCredentialsNonExpired() {
// TODO Auto-generated method stub
return false;
}
}
AuthorityVO class map table authorities

Code:
@Entity
@Table(name=quot;authoritiesquot;,schema=quot;publicquot;)
public class AuthorityVO {

private UserVO user;
private String authority;

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name=quot;usernamequot;,nullable=false)
@ForeignKey(name=quot;fk_authorities_usersquot;)
public UserVO getUser() {
return user;
}

public void setUser(UserVO user) {
this.user = user;
}@Column(name=quot;authorityquot;,length = 50,nullable=false)
public String getAuthority() {
return authority;
}

public void setAuthority(String authority) {
this.authority = authority;
}
At first I didn't add @OneToMany in UserVO and not AuthorityVO,All was fine.But i add those things to my project I got error

Code:
org..beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.vaannila.vo.AuthorityVO
at org..beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
at org..beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org..beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org..beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org..beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org..beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org..beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org..beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
at org..context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org..context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
I know error means AuthorityVO not true map with Table authorities.But I find a lot of web and ebooks but I cannnot find where is problem to fix.An you help me?

AuthorityVO is missing a primary key mapping. Something like:Code:
@Id
@Column(name=quot;user_authority_idquot;,length=50,nullable=false)
private int id;
¥
Back Forum Reply New