【问题标题】:Creating POJOs in Hibernate在 Hibernate 中创建 POJO
【发布时间】:2017-12-25 22:37:04
【问题描述】:

我正在尝试创建 pojo。我的要求是根据策略 ID 检索用户信息。每个客户只有一个地址和一个政策。

所以我创建了三个 POJO。 Address.java、Customer.java、Policy.java。

地址.java

@Entity
@Table(name="CUSTOMER_ADDRESS")
public class Address {


    @Column(name="ADDRESS_STREET")
    private String address_street;

    @Column(name="ADDRESS_CITY")
    private String address_city;

    @Column(name="ADDRESS_STATE")
    private String address_state;

    @Column(name="ADDRESS_ZIPCODE")
    private String address_zipcode;

    @GenericGenerator(name = "generator", strategy = "foreign",
    parameters = @Parameter(name = "property", value = "CUSTOMER"))
    @Id
    @GeneratedValue(generator = "generator")
    @Column(name="CUSTOMER_ID")
    private int customer_id;
    public String getAddress_street() {
        return address_street;
    }
    public void setAddress_street(String address_street) {
        this.address_street = address_street;
    }
    public String getAddress_city() {
        return address_city;
    }
    public void setAddress_city(String address_city) {
        this.address_city = address_city;
    }
    public String getAddress_state() {
        return address_state;
    }
    public void setAddress_state(String address_state) {
        this.address_state = address_state;
    }
    public String getAddress_zipcode() {
        return address_zipcode;
    }
    public void setAddress_zipcode(String address_zipcode) {
        this.address_zipcode = address_zipcode;
    }
    public int getCustomer_id() {
        return customer_id;
    }
    public void setCustomer_id(int customer_id) {
        this.customer_id = customer_id;
    }



}

客户.java

@Entity
@Table(name="CUSTOMER")
public class Customer {

    private int customer_id;
    private String customer_name;
    private Date customer_dob;
    private Address address;
    private Policy policy;

    @OneToOne
    @JoinColumn(name = "CUSTOMER_ID")
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    @OneToOne
    @JoinColumn(name = "CUSTOMER_ID")
    public Policy getPolicy() {
        return policy;
    }
    public void setPolicy(Policy policy) {
        this.policy = policy;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "CUSTOMER_ID")
    public int getCustomer_id() {
        return customer_id;
    }
    public void setCustomer_id(int customer_id) {
        this.customer_id = customer_id;
    }

    @Column(name = "CUSTOMER_NAME")
    public String getCustomer_name() {
        return customer_name;
    }
    public void setCustomer_name(String customer_name) {
        this.customer_name = customer_name;
    }

    @Column(name = "CUSTOMER_DOB")
    public Date getCustomer_dob() {
        return customer_dob;
    }
    public void setCustomer_dob(Date customer_dob) {
        this.customer_dob = customer_dob;
    }

}

Policy.java

@Entity
@Table(name="CUSTOMER_POLICY_DETAILS")
public class Policy implements Serializable{

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

    @Id
    @Column(name="POLICY_ID")
    int policy_id;

    @Column(name="POLICY_START_DATE")
    String policyStartDate;

    @Column(name="POLICY_END_DATE")
    String policyEndDate;

    @GenericGenerator(name = "generator", strategy = "foreign",
    parameters = @Parameter(name = "property", value = "CUSTOMER"))
    @Id
    @GeneratedValue(generator = "generator")
    @Column(name="CUSTOMER_ID")
    int customer_id;

    public int getCustomer_id() {
        return customer_id;
    }

    public void setCustomer_id(int customer_id) {
        this.customer_id = customer_id;
    }

    public Policy() {
        super();
    }

    public int getPolicy_id() {
        return policy_id;
    }



    public void setPolicy_id(int policy_id) {
        this.policy_id = policy_id;
    }



    public String getPolicyStartDate() {
        return policyStartDate;
    }

    public void setPolicyStartDate(String policyStartDate) {
        this.policyStartDate = policyStartDate;
    }

    public String getPolicyEndDate() {
        return policyEndDate;
    }

    public void setPolicyEndDate(String policyEndDate) {
        this.policyEndDate = policyEndDate;
    }


}

我应该在我的 Customer 类中包含 Address 对象和 Policy 对象吗? 由于我在 Address 和 Policy 类中有 customer_id 属性,我不需要将它包含在我的 Customer 类中吗?

【问题讨论】:

    标签: hibernate pojo


    【解决方案1】:

    我从您的描述中了解到。客户和地址之间的关系是一对一的,客户必须有地址和地址属于一个客户,并且对于政策也是如此。所以无论客户在地址中还是在客户中的地址都无关紧要 pojo .

    所以在您的情况下,您将获得客户对象,然后是来自同一对象的地址和政策。我希望回答您的问题。

    【讨论】:

      【解决方案2】:

      是的。在客户实体中包含addresspolicy实体是根据policy_idaddress_id。为此,您需要在 customer 实体中包含 addresspolicy 实体的主键。根据您提供的代码,地址实体的连接列必须是 Address_id,策略实体的连接列必须是 policy_id

      1. 您为 customer 中的两个映射指定了相同的名称 实体。由于这些映射代表关系和外来 键,各个实体的主键列的名称必须是 您的加入列。

      2. 因为您只有 one-one 映射到其他实体的双向 映射在这里不会造成任何问题。但是你应该很 小心其他关系映射中的双向映射。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-13
        • 2012-09-18
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        • 2017-10-23
        • 2018-09-12
        • 1970-01-01
        相关资源
        最近更新 更多