java - Hibernate:映射@OneToMany/@ManyToOne问题(不使用实体主键)

标签 java hibernate orm annotations persistence

我是 Hibernate/Spring 的新手,尝试在创建一个小型 Web 实用程序的同时映射遗留数据库,这应该可以减轻同事的一些工作。由于我已经映射了实体并可以访问底层数据,因此我在以后的道路上遇到了一些问题。长话短说,我有两个实体,客户

@Entity
public class Customer implements Serializable{

    @Id
    @Column(name = "RecordID")
    private Integer id;

    @Column(name = "CUSTOMERNAME1")
    private String name;

    @OneToMany
    @JoinColumn(name="CUSTOMER1", referencedColumnName="CUSTOMERNAME1")
    private List<Contract> contracts;
}

和契约(Contract):

@Entity
public class Contract implements Serializable {

    @Id
    @Column(name = "RECORDID") //RecordID
    private Integer id;

    @Column(name = "CONTRACTID1") //ContractID1
    private String contractId;

    @Column(name = "CUSTOMER1") //Customer1
    private String customerName;

    //@ManyToOne
    //private Customer customer;  // how can I write the reverse mapping?
}

从客户到契约(Contract)的映射有效(一个客户可以拥有许多契约(Contract),我可以使用客户中的“列表契约(Contract)”字段获取所有契约(Contract),但我的问题是,我怎样才能实现相反的目标 - 也就是说,让客户,映射到哪个合约?

最佳答案

Java API 有一些如何使用 ManyToOne 注释的示例: http://java.sun.com/javaee/6/docs/api/javax/persistence/ManyToOne.html

类似下面的内容:

客户类别:

@OneToMany(mappedBy="customer", cascade=CascadeType.ALL)
private List<Contract> contracts;

契约(Contract)类别:

@ManyToOne
@JoinColumn(name="customer_id", nullable=false)
private Customer customer;  

关于java - Hibernate:映射@OneToMany/@ManyToOne问题(不使用实体主键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7387870/

相关文章:

spring - 在多列上使用 Spring 数据中的不同值

java - Wicket - 哪个ORM?

java - 我应该如何组织我的 Java GUI?

Java、Struts2 和 AJAX。需要一些指示

Java split 给出相反顺序的阿拉伯字符

hibernate - 我在 OneToMany 关系中遇到错误?

python - Django ORM 迁移在 IntegerField 上给出 "ValueError: invalid literal for int()"

python - Django ORM 是否具有等效于 SQLAlchemy 的混合属性?

java - 当两个 AWS Java Lambda 函数都在同一个账户、同一个区域时,如何从另一个 AWS Java Lambda 函数调用 aws java lambda 函数

java - 遍历对象层次结构