MoienGK
MoienGK

Reputation: 4654

How to set column name for Hashmap's value with JPA?

Consider the following annotations :

    public class Estate {

        @OneToMany(cascade = CascadeType.ALL)
        @JoinTable(name = "estates_owners")
        @MapKeyJoinColumn(name="owner_id")
        public Map<Owner, Share> getOwnerSharesMap() {
            return ownerSharesMap;
        }

    }

Hibernate creates a table estates_owners with following column names:

estate_id | ownersharesmap_id | owner_id

How can I customize the column named ownersharesmap_id? I want to rename it to share_id.

Upvotes: 0

Views: 383

Answers (1)

Ish
Ish

Reputation: 4154

Specify a inverseJoinColumns in your @JoinTable annotation.

@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "estates_owners",
    inverseJoinColumns=@JoinColumn(name="share_id"))
@MapKeyJoinColumn(name="owner_id")
public Map<Owner, Share> getOwnerSharesMap() {
    return ownerSharesMap;
}

Upvotes: 2

Related Questions