【问题标题】:How to make OneToOne relationship using join on secondary key?如何使用辅助键连接建立 OneToOne 关系?
【发布时间】:2013-01-04 06:14:12
【问题描述】:

我有两个班级:

@Entity
@Table(name = "clients")
public class Client extends Model {

    @Id
    public int id;

    public String name;

    @OneToOne
    public Contact contact;
}

@Entity
@Table(name = "contacts")
public class Contact extends Model {

    @Id
    public int id;

    @OneToOne
    @Column(name = "client_name")
    public String clientName;
}

现在我想设置 OneToOne 关系,但使用 client_name 列 (on clients.name=contacts.client_name) 加入。该怎么做?

我知道使用主键加入更好,但数据库结构是固定的,我无法更改。

【问题讨论】:

  • 我认为你应该使用,不确定 Ebean 是否支持它:@JoinColumn(name = "client_name") in Context.class(可选)和@OneToOne(mappedBy="client_name")(强制) .
  • @adis 现在抱怨PersistenceException: Error on models.Client.contact. mappedBy property [models.Contact.clientName]is not a OneToOne? 可能是因为clientName 是一个字符串。
  • @adis 但如果我做到Client 那么它会说Unknown column 't1.client_name_id'

标签: java jpa orm playframework-2.0 ebean


【解决方案1】:

试试:

@OneToOne
@Column(name = "client_name")
@JoinColumn(name = "client_name", referencedColumnName = "name")
public Client client;

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    相关资源
    最近更新 更多