带有pincode和districtId的复合键关系

时间:2018-06-27 16:02:23

标签: spring hibernate web-services spring-boot

我是Spring + Hibernate Web服务的新手。

我已经为districtpincode表创建了两个实体,如下所述

District.java

@Entity
@Table(name = "district")
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = { "createdDate", "updatedDate" }, allowGetters = true)
public class District {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "district_id")
    private int districtId;

    @Column(name = "district_name", length = 45)
    private String districtName;

    @Column(name = "district_code", length = 45)
    private String districtCode;

    @JsonBackReference(value = "loginId")
    @ManyToOne
    @JoinColumn(name = "created_by", updatable = false, nullable = false)
    private AdminUser createdBy;

    @JsonBackReference(value = "lastUpdatedBy")
    @ManyToOne
    @JoinColumn(name = "last_updated_by")
    private AdminUser lastUpdatedBy;

    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "state_id")
    private State state;

    /*@JsonIgnore
    @OneToMany(mappedBy = "district",targetEntity=Pincode.class)
    private List<Pincode> pincode;*/

    @JsonIgnore
    @OneToMany(mappedBy="district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<Pincode> pincode;
    /*@JsonIgnore
    @OneToMany(mappedBy="district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<PincodeIdentity> PincodeIdentity;*/

    @JsonIgnore
    @OneToMany(mappedBy = "district")
    private List<College> college;

    public List<Pincode> getPincode() {
        return pincode;
    }

    public void setPincode(List<Pincode> pincode) {
        this.pincode = pincode;
    }

}

Pincode.java

  @Entity
    @Table(name = "pincode")
    @EntityListeners(AuditingEntityListener.class)
    @JsonIgnoreProperties(value = { "createdDate", "updatedDate" }, allowGetters = true)
    public class Pincode implements Serializable {

        private static final long serialVersionUID = 1L;

        @EmbeddedId
        private PincodeIdentity pincodeIdentity;  

        public PincodeIdentity getPincodeIdentity() {
            return pincodeIdentity;
        }

        public void setPincodeIdentity(PincodeIdentity pincodeIdentity) {
            this.pincodeIdentity = pincodeIdentity;
        }      
    }

PincodeIdentity.java (可嵌入)

@Embeddable
public class PincodeIdentity implements Serializable {
    /**
         * 
         */
    private static final long serialVersionUID = 1L;

    @Column(name = "pincode", nullable = false)
    private Long pincode;
    /*(fetch = FetchType.EAGER, targetEntity = District.class)*/
    @ManyToOne
    @JoinColumn(name = "districtId", nullable = false)
    private District district;

    public Long getPincode() {
        return pincode;
    }

    public void setPincode(Long pincode) {
        this.pincode = pincode;
    }

    public District getDistrict() {
        return district;
    }

    public void setDistrict(District district) {
        this.district = district;
    }

     @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        PincodeIdentity that = (PincodeIdentity) o;

        if (!pincode.equals(that.pincode)) return false;
        return district.equals(that.district);
    }

    @Override
    public int hashCode() {
        int result = pincode.hashCode();
        result = 31 * result + pincode.hashCode();
        return result;
    }
}

我遇到了这个问题 mapped通过引用未知的目标实体属性:com.studawn.model.District.pincode中的com.studawn.model.Pincode.district

更新后

@OneToMany(mappedBy="pincodeIdentity.district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)

我遇到了地区知识库

 Caused by: org.hibernate.QueryException: could not resolve property: pincodeIdentity of: com.studawn.model.District [select distinct(u) from com.studawn.model.District u left join u.pincodeIdentity.pincode p  WHERE (u.districtName LIKE :keyword OR u.districtCode LIKE :keyword OR p.pincode LIKE :keyword ) and u.state.stateId =:stateId ]

我在等你的建议 预先感谢

0 个答案:

没有答案