是否可以在Postgres中的表和视图之间在Hibernate中创建自定义的一对一关系?

时间:2015-10-28 13:41:38

标签: java hibernate postgresql

我在数据库中有一个表和一个视图(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配置。如果有人可以使用注释为我提供答案,那也会很棒。

提前致谢。

1 个答案:

答案 0 :(得分:1)

是的,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;
}