chris
chris

Reputation: 937

Hibernate two tables and one object

I have this situtation:

Table1: 
tab_id
field11
field12


Table2
id
tab_id
field21
field22

I have to create one object on this two tables for example:

object: 

@Id
tabId

@Colummn(name="field11")
field11

@Colummn(name="field12")
field12

@Colummn(name="field21")
field21

When i update field21 table2 should update this field, but table1 doesn't have any information about table2, only table2 hat foreign key to table1

Any idea how i should this make ?

I cannot change table structure, i can only create new class in java.

Upvotes: 5

Views: 5112

Answers (2)

Pascal Thivent
Pascal Thivent

Reputation: 570615

The id column in Table2 (I guess it's the PK) is annoying. But if you can get it generated upon insert, mapping both tables using a @SecondaryTable should work:

@Entity
@Table(name="TABLE1")
@SecondaryTable(name="TABLE2", pkJoinColumns = 
    @PrimaryKeyJoinColumn(name="TAB_ID", referencedColumnName="TAB_ID")
)
public class MyEntity {
    ...
    @Id @Column(name="TAB_ID")
    private Long tabId;

    @Column(name="FIELD11")
    private int field11;

    @Column(name="FIELD12")
    private int field12;

    @Column(name="FIELD21", table="TABLE2")
    private int field21;
    ...
}

If you can't, I'm afraid you'll have to map 2 classes (with a OneToOne relation).

References

  • JPA Wikibook
  • JPA 1.0 specification
    • Section 9.1.2 "SecondaryTable Annotation"
    • Section 9.1.32 "PrimaryKeyJoinColumn Annotation"

Upvotes: 3

Joni
Joni

Reputation: 3357

Can you use @SecondaryTable @SecondaryTable annotation problem?

Upvotes: 2

Related Questions