2016-07-01 2 views
1

인 열을 찾을 수 없습니다. 문제가 있습니다. 최대 절전 모드에서 스키마 데이터베이스를 만들 수 없습니다. 스키마가 생성되었지만 열이 아닙니다. 나는 왜, intelij에 빨간 주석이 없는지 모른다. 임 초보자와 나는 튜토리얼을 사용했다.Autowired 및 논리 이름이

스택 트레이스

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roleDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.adapp.dao.abstr.AbstractHibernateDAO.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in com.adapp.web.config.persistance.PersistenceConfiguration: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unable to map collection com.adapp.dto.Privilege.privileges 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4727) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5167) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
    at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1648) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:463) 
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:413) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466) 
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) 
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307) 
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1399) 
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:828) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323) 
    at sun.rmi.transport.Transport$1.run(Transport.java:200) 
    at sun.rmi.transport.Transport$1.run(Transport.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$254(TCPTransport.java:683) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$1/1932778756.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.adapp.dao.abstr.AbstractHibernateDAO.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in com.adapp.web.config.persistance.PersistenceConfiguration: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unable to map collection com.adapp.dto.Privilege.privileges 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) 
    ... 59 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in com.adapp.web.config.persistance.PersistenceConfiguration: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unable to map collection com.adapp.dto.Privilege.privileges 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) 
    ... 61 more 
Caused by: org.hibernate.AnnotationException: Unable to map collection com.adapp.dto.Privilege.privileges 
    at org.hibernate.cfg.annotations.CollectionBinder.bindCollectionSecondPass(CollectionBinder.java:1461) 
    at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1233) 
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:794) 
    at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:729) 
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:70) 
    at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1697) 
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1426) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1846) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
    ... 71 more 
Caused by: org.hibernate.cfg.RecoverableException: Unable to find column with logical name: roleId in org.hibernate.mapping.Table(Role) and its related supertables and secondary tables 
    at org.hibernate.cfg.Ejb3JoinColumn.checkReferencedColumnsType(Ejb3JoinColumn.java:590) 
    at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:258) 
    at org.hibernate.cfg.annotations.CollectionBinder.bindCollectionSecondPass(CollectionBinder.java:1456) 
    ... 84 more 
Caused by: org.hibernate.MappingException: Unable to find column with logical name: roleId in org.hibernate.mapping.Table(Role) and its related supertables and secondary tables 
    at org.hibernate.cfg.Ejb3JoinColumn.checkReferencedColumnsType(Ejb3JoinColumn.java:583) 
    ... 86 more 

HibernateDAO

import com.adapp.common.IOperations; 
import com.google.common.base.Preconditions; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 

import java.io.Serializable; 
import java.util.List; 

/** 
* Created by Dom on 23.06.2016. 
*/ 
@SuppressWarnings("unchecked") 
public abstract class AbstractHibernateDAO<T extends Serializable> implements IOperations<T> { 
    private Class<T> clazz; 

    @Autowired 
    private SessionFactory sessionFactory; 

    // API 

    protected final void setClazz(final Class<T> clazzToSet) { 
     clazz = Preconditions.checkNotNull(clazzToSet); 
    } 

    @Override 
    public final T findOne(final long id) { 
     return (T) getCurrentSession().get(clazz, id); 
    } 

    @Override 
    public final List<T> findAll() { 
     return getCurrentSession().createQuery("from " + clazz.getName()).list(); 
    } 

    @Override 
    public final void create(final T entity) { 
     Preconditions.checkNotNull(entity); 
     // getCurrentSession().persist(entity); 
     getCurrentSession().saveOrUpdate(entity); 
    } 

    @Override 
    public final T update(final T entity) { 
     Preconditions.checkNotNull(entity); 
     return (T) getCurrentSession().merge(entity); 
    } 

    @Override 
    public final void delete(final T entity) { 
     Preconditions.checkNotNull(entity); 
     getCurrentSession().delete(entity); 
    } 

    @Override 
    public final void deleteById(final long entityId) { 
     final T entity = findOne(entityId); 
     Preconditions.checkState(entity != null); 
     delete(entity); 
    } 

    protected final Session getCurrentSession() { 
     return sessionFactory.getCurrentSession(); 
    } 

} 

PrivilegesDTO

@Entity 
@Table 
@AttributeOverride(name = "id", column = @Column(name = "privilegeId")) 
public class Privilege extends BaseEntity { 

    @ManyToMany(mappedBy = "privileges") 
    private List<Role> roles; 

    @Column(name = "name",unique = true) 
    private String name; 

RoleDTO

@Entity 
@Table 
@AttributeOverride(name = "id", column = @Column(name = "roleId")) 
@org.hibernate.annotations.NamedQueries({ @org.hibernate.annotations.NamedQuery(name = "Role_findByName", 
     query = "select OBJECT(r) from role r where r.name=:name") }) 
public class Role extends BaseEntity { 

    @ManyToMany(mappedBy = "roles") 
    private Collection<User> users; 

    @ManyToMany(fetch = FetchType.EAGER) 
    @JoinTable(name = "role_privilege", 
      joinColumns = @JoinColumn(name = "role_id", referencedColumnName = "roleId"), 
      inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "privilegeId")) 
    private List<Privilege> privileges; 

    @Column(name = "name", unique = true) 
    private String name; 

    @Column(name = "description") 
    private String description; 
,745,

편집 :

문제 referencedColumnName로 모든 것을하지 않고

@ManyToMany(fetch = FetchType.EAGER) 
    @JoinTable(name = "role_privilege", 
      joinColumns = @JoinColumn(name = "role_id", referencedColumnName = "roleId"), 
      inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "privilegeId")) 
    private List<Privilege> privileges; 

괜찮입니다. 나는 왜 그런지 알지 못한다 ...

+0

오류 메시지는 Privilege 클래스에있는 collection previleges에 대해 불평합니다. 그래서 우리가 당신의 실체에 대한 실제 코드를 보여주고 있다고 생각하지 않습니다. –

+0

이것은 intelij의 실제 코드 붙여 넣기입니다. – chris95

+0

나는 previleges에 관하여 불평을 보지 않느냐? 어디에서 본거야? – chris95

답변

0

이 오류는 역할 테이블에 role이없고 역할이 일부 데이터베이스에서 예약 된 키워드이므로 USER_ROLE로 테이블 이름을 변경해야한다는 것을 알려줍니다 또는 당신에게 이해되는 어떤 것. 교체

보십시오 : @Table (이름 = "USER_ROLE") 일 것이다 이름을 변경

희망과 @Table 주석. 행운을 빌어 요 :)

+0

아니, 내가 MySQL을 사용하고 테이블 이름을 변경했지만이 같은 문제가 있습니다. – chris95