2015-10-23 34 views
0

考虑下面的注释:如何使用JPA为Hashmap的值设置列名称?

public class Estate { 

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

    } 

休眠创建一个表estates_owners具有以下的列名:

estate_id | ownersharesmap_id | owner_id 

我如何自定义命名ownersharesmap_id列?我想将其重命名为share_id

+0

@Tunaki我应该在哪里放?它不会编译,如果我将它添加到mapKeyJoinColumn,它似乎是唯一可能的地方 – MoienGK

+0

这是错误的@ @ MapKeyJoinColumn,适用于来自'所有者'实体的映射关键字。问题是如何设置“共享”实体的地图值的列名。 referencedColumnName不会达到所需的结果。 – Ish

+0

@Tunaki,因为我说这是行不通的。 – MoienGK

回答

2

@JoinTable注释中指定inverseJoinColumns

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

nope。这会重命名为estate_id – MoienGK

+0

对不起,请改用'inverseJoinColumns'。更新我的回答 – Ish

+0

似乎它工作,让我为任何副作用chek,我会回到你身边 – MoienGK