spring mvc model error mapping

时间:2017-04-29 17:13:53

标签: java spring

我正在使用spring mvc并在2个表之间创建一对多的关系。我有2个型号:

  1. ContractHeader 1:很多
  2. ContractEntitlement many:1
  3. ContractHeader.java

    @Entity
    @Table(name = "CONTRACT_HEADER")
    public class ContractHeader {
    
        @Id
        @Column(name = "id")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;
    
        @OneToMany(mappedBy = "contractHeader", cascade = CascadeType.ALL)
        private List<ContractEntitlement> contractEntitlements;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
    
        public List<ContractEntitlement> getContractEntitlements() {
            return contractEntitlements;
        }
    
        public void setContractEntitlements(List<ContractEntitlement> contractEntitlements) {
            this.contractEntitlements = contractEntitlements;
        }
    
    }
    

    ContractEntitlement.java

    @Entity
    @Table(name = "CONTRACT_ENTITLEMENT")
    public class ContractEntitlement {
    
        @Id
        @Column(name = "id")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;
    
        @ManyToOne
        @JoinColumn(name = "id")
        private ContractHeader contractHeader; 
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public ContractHeader getContractHeader() {
            return contractHeader;
        }
    
        public void setContractHeader(ContractHeader contractHeader) {
            this.contractHeader = contractHeader;
        }
    
    }
    

    我在eclipse sts中发布时遇到错误:

    deploy is failing=Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: org.hibernate.MappingException: Repeated column in mapping for entity: com.at.ccts.model.ContractEntitlement column: id (should be mapped with insert="false" update="false"). Please see server.log for more details.
    

    有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在您的实体 ContractHeader 中,您的映射会为表提供两列名称为 id 的列,更改@JoinColumn中的name属性

@ManyToOne
@JoinColumn(name = "idContractHeader")
private ContractHeader contractHeader; 

答案 1 :(得分:0)

你应该使用这个链接: -

@OneToMany(mappedBy = "ContractHeader", cascade = CascadeType.ALL)
private List<ContractEntitlement> contractEntitlements;