Spring 实体映射中的重复列:com.priyan.patients.EPrescriber列:id(应使用insert=";false";update=";false";映射)

Spring 实体映射中的重复列:com.priyan.patients.EPrescriber列:id(应使用insert=";false";update=";false";映射),spring,hibernate,postgresql,spring-mvc,nhibernate-mapping,Spring,Hibernate,Postgresql,Spring Mvc,Nhibernate Mapping,这是我的bean类 @Entity @Table(name="TABLETS", uniqueConstraints = {@UniqueConstraint(columnNames = "tradeName")}) public class Tablets implements Serializable{ private static final long serialVersionUID = 4854785134773287611L; public Tablets() {

这是我的bean类

@Entity
@Table(name="TABLETS", uniqueConstraints = {@UniqueConstraint(columnNames = "tradeName")})
public class Tablets implements Serializable{

    private static final long serialVersionUID = 4854785134773287611L;

    public Tablets() {
    }

    public Tablets(int id, String tradeName, String category, String type,
            Set<EPrescriber> selectedTablets) {
        this.id = id;
        this.tradeName = tradeName;
        this.category = category;
        this.type = type;
        this.selectedTablets = selectedTablets;
    }

    @Id
    @Column(name = "id", unique = true, nullable = false)
    @SequenceGenerator(name="tablets_seq", sequenceName="tablets_id_seq")
    @GeneratedValue(strategy = GenerationType.SEQUENCE , generator= "tablets_seq" )
    private int id;

    @Column private String tradeName;
    @Column private String category;
    @Column private String type;


    @OneToMany(fetch = FetchType.LAZY, mappedBy="tablets")
    @Column private Set<EPrescriber> selectedTablets=new HashSet<EPrescriber>(0);

    public Set<EPrescriber> getSelectedTablets() {
        return selectedTablets;
    }

    public void setSelectedTablets(Set<EPrescriber> selectedTablets) {
        this.selectedTablets = selectedTablets;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getTradeName() {
        return tradeName;
    }
    public void setTradeName(String tradeName) {
        this.tradeName = tradeName;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }

}
这是我的错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactsControllers': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.priyan.patients.ContactsDAO com.priyan.patients.ContactsControllers.contactsDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactsDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.priyan.patients.ContactsDAO.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: com.priyan.patients.EPrescriber column: id (should be mapped with insert="false" update="false")
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.priyan.patients.ContactsDAO com.priyan.patients.ContactsControllers.contactsDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactsDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.priyan.patients.ContactsDAO.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: com.priyan.patients.EPrescriber column: id (should be mapped with insert="false" update="false")
请帮我解决这个问题。 谢谢

编辑

现在我改变了我的bean类,如下所示

@Entity
@Table(name = "E_PRESCRIBER")
public class EPrescriber implements Serializable {

    private static final long serialVersionUID = 440529869955257543L;

    @Id
    @Column(name = "ePrescriberid"  ,unique = true, nullable = false)
    @SequenceGenerator(name = "ePrescriber_seq", sequenceName = "ePrescriber_id_seq")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ePrescriber_seq")
    private int ePrescriberid;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "id", nullable = false)
    private Tablets tablets;

    public int getePrescriberid() {
        return ePrescriberid;
    }

    public void setePrescriberid(int ePrescriberid) {
        this.ePrescriberid = ePrescriberid;
    }

    public Tablets getTablets() {
        return tablets;
    }

    public void setTablets(Tablets tablets) {
        this.tablets = tablets;
    }

}
现在它给出了以下错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactsControllers': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.priyan.patients.EPrescriberDAO com.priyan.patients.ContactsControllers.ePrescriberDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'EPrescriberDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.orm.hibernate3.HibernateTemplate com.priyan.patients.EPrescriberDAO.hibernateTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.orm.hibernate3.HibernateTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.priyan.patients.EPrescriberDAO com.priyan.patients.ContactsControllers.ePrescriberDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'EPrescriberDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.orm.hibernate3.HibernateTemplate com.priyan.patients.EPrescriberDAO.hibernateTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.orm.hibernate3.HibernateTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
    at org.springframework

在亲爱的Jorge的帮助下整理的主要问题

我的刀还有第二个问题

现在用下面的代码对其进行排序

@Autowired
private SessionFactory sessionFactory;

public void getTabletbyNameAndSave(String []selectedMedicines) {
    Session session =  HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    EPrescriber ePrescriber=new EPrescriber();
    List<Tablets> selectedTablets=new ArrayList<Tablets>();
    //MY transaction & business logics
    session.save(ePrescriber);
    session.getTransaction().commit();
    //sessionFactory.getCurrentSession().save(ePrescriber);
}
@Autowired
私人会话工厂会话工厂;
public void getTabletbyNameAndSave(字符串[]selectedMedicines){
Session Session=HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
EPrescriber EPrescriber=新的EPrescriber();
List selectedTablets=new ArrayList();
//我的交易与业务逻辑
session.save(ePrescriber);
session.getTransaction().commit();
//sessionFactory.getCurrentSession().save(eDescripter);
}

我想这就是你的问题:
@JoinColumn(name=“id”,nullable=false)
因为你已经有了一个名为column的id。亲爱的豪尔赫·坎波斯。感谢您的建议。现在问题已更正,但出现了另一个错误,请帮助我整理此问题[后编辑]很高兴它有所帮助。正如StackTrace所说,没有定义为EPrescriberDAO的DAO。您应该发布您的bean映射器,以便我们可以查看您的配置。在我这边已经很晚了,快00点了,所以我现在要睡觉了。如果有人在明天之前帮助你,我会继续帮助你。晚安,亲爱的豪尔赫。你说得对。我的刀似乎有问题。你会核实这一点吗
@Autowired
private SessionFactory sessionFactory;

public void getTabletbyNameAndSave(String []selectedMedicines) {
    Session session =  HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    EPrescriber ePrescriber=new EPrescriber();
    List<Tablets> selectedTablets=new ArrayList<Tablets>();
    //MY transaction & business logics
    session.save(ePrescriber);
    session.getTransaction().commit();
    //sessionFactory.getCurrentSession().save(ePrescriber);
}