JPA如何从另一个表中检索值?

时间:2013-11-18 20:52:36

标签: java jpa annotations eclipselink

假设我有2个表A和B.

Table A:   id, code1, code2, code3, code4   (id is the primary key)
Table B:   codeID, displayText, someOtherColumn  (codeID is the primary key)

code1,code2,code3和code4只是表B中的CodeID

现在我有课

class Foo {
    @Id
    @Column(name="id")
    private String id;


    //Now How To Get the displayText based on codeID in Table B?
    private String code1Display;
    private String code2Display;
    private String code3Display;
    private String code3Display

}

我以为我应该使用“SecondaryTable”注释。但是从阅读克里斯在这里的回复来看,这是行不通的。那我该如何在这里实现我的目标呢?

我只需要阅读这些值,而不是保存。

1 个答案:

答案 0 :(得分:0)

如果未指定列信息,则属性code1Display,code2Display等的映射将默认在主表A上使用字段“CODE1DISPALY”,“CODE2DISPLAY”等。因此,对于每个属性映射,您需要指定该字段存在于该表中:

@Column(name = "CODE1", table = "B")
private String code1Display;

辅助表注释用于指定第二个表以及它如何链接到主表。见http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/SecondaryTable。但在你的情况下,它只是:

@SecondaryTable(name =“B”,pkJoinColumns = @ PrimaryKeyJoinColumn(name =“codeID”))