我在数据库(Postgres)中有一个表和一个视图。它们之间的业务关系是一对一的。但是,我无法修改数据库以创建任何约束。

该表是这样的:

CREATE TABLE invoice
(
  invoiceid text NOT NULL,
  date_created timestamp without time zone NOT NULL DEFAULT now(),
  CONSTRAINT invoice_pkey PRIMARY KEY (invoiceid)
)
WITH (
  OIDS=FALSE
);


该视图类似于:

    CREATE OR REPLACE VIEW invoice_view AS
    SELECT invoice.invoiceid, invoice.date_created,
    .......
    FROM invoice;


我可以在Hibernate中创建自定义的一对一关系,以便使用myInvoice.getInvoiceView();之类的东西吗?如果可能,该怎么办?

我正在使用XML配置。如果有人可以使用注释为我提供答案,那也很好。

提前致谢。

最佳答案

是的,Hibernate不在乎是否将实体映射到表或视图:

@Entity
@Table(name = "invoice")
public class Invoice {
  @Id
  @Column(name = "invoiceid")
  private String id;

  @OneToOne
  @PrimaryKeyJoinColumn
  private InvoiceView invoiceView;
}

@Entity
@Table(name = "invoice_view")
public class InvoiceView {
  @Id
  @Column(name = "invoiceid")
  private String id;
}

10-08 02:29