Eclipse hibernate pojo includes foreign keys

I am following an excellent guide for creating pojos from a mysql database using sleep mode. A guide can be found here for reference: Create pojos with sleep mode

I get pojos that have fields that insert other objects when a foreign key is present. For example, the user has addresses. Hibernate generates something like the following:

public class User(){
 private String name;
 private Integer uid;
 private Address address;
}

I have a problem, however, in that I want the classes to actually contain the value of the foreign key. For example, I want the User object to have a class field corresponding to the database field for addressId. So, I want the object to really look something like this:

public class User(){
 private String name;
 private Integer uid;
 private Integer addressId;
 private Address address;
}

- , , ?

Update: SO, , : ?

, . . , , .

Update:

, . . pojos, . . , " ". , , pojo , . gson .

gson pojo , hibernate. , , , . , hibernate pojo. :

+4
3

Hibernate. Hibernate , Hibernate , . - , " " . , , .

- , getAddressId().

public class User() {
    private String name;
    private Integer uid;
    private Address address;

    // Getters, setters...

    @Transient
    public boolean getAddressId() {
        address.getId();
    }
}

, , Hibernate. Hibernate. , POJO DAO ( ), .

Update:

, . GSON , , this, .

, , , GSON .

+2

. , Hibernate-, , , "" :

yourUser.getAddress().getAddressId();
0

( ) , Hibernate Tools:

1) :

@Entity
class User
{
    @Id
    @Column
    private Integer uid;

    @Column
    private String name;

    @Column(name = "ADDRESS_ID", insertable = false, updatable = false)
    private Integer addressId;

    @ManyToOne
    @JoinColumn(name = "ADDRESS_ID")
    private Address address;
}

2) @Transient + @PostLoad:

@Entity
class User
{
    @Id
    @Column
    private Integer uid;

    @Column
    private String name;

    @Transient
    private Integer addressId;

    @ManyToOne
    @JoinColumn(name = "ADDRESS_ID")
    private Address address;

    @PostLoad
    public void postLoad()
    {
        addressId = Optional.ofNullable(address).map(Address::getId).orElse(null);
    }
}

JSON JAXB:

@XmlRootElement
class User
{
    @XmlID
    private Integer uid;

    private String name;

    @XmlIDREF
    private Address address;
}

0

Source: https://habr.com/ru/post/1620223/


All Articles