【问题标题】:How to annotate an Object to String Map in Hibernate如何在 Hibernate 中将对象注释为字符串映射
【发布时间】:2015-06-30 15:05:10
【问题描述】:

我有两个对象:Entity 和 Secondary。 实体包含从字符串到次要的映射。它还有一个复合键。

我曾使用 JDO 进行映射,但现在是(过去)迁移到 JPA 的时候了。

我不知道如何编写注释以使其工作,

数据库中有三个包含数据的表。

desc map_table
Name       Null     Type         
---------- -------- ------------ 
ENTITYID     NOT NULL VARCHAR2(12) 
ENTITYSOURCE NOT NULL NUMBER(1)    
SECONDARYID  NOT NULL VARCHAR2(20) 
VALUE        NOT NULL VARCHAR2(16) 

desc entity
Name       Null     Type         
---------- -------- ------------ 
ID     NOT NULL VARCHAR2(12) 
SOURCE NOT NULL NUMBER(1)    
.....

desc secondary
Name       Null     Type         
---------- -------- ------------ 
ID     NOT NULL VARCHAR2(12) 
name            NUMBER(1)    

我正在运行 Hibernate 4.2.19

主类:

@Entity
@Table(name="ENTITY")
public class Entity
{
    @EmbeddedId
    private EntityKey key;

    @SomehtingIHavntFiguredOut
    private Map<Secondary, String> domainConfig = new HashMap<Secondary, String>(); 
}

这是我留下的 JDO 映射:

<field name="map" table="MAP_TABLE" default-fetch-group="true">
<map key-type="com.foo.Secondary" value-type="String" />
<join>
    <column name="ENTIYID" target="ID"/>
    <column name="ENTITYSOURCE" target="SOURCE"/>
</join>
<key>
    <column name="SECONDARYID"/>
</key>
<value>
    <column name="VALUE"/>
</value>

【问题讨论】:

    标签: hibernate jpa hibernate-mapping


    【解决方案1】:

    我的解决方案

    @ElementCollection
    @CollectionTable(name="MAP_TABLE", joinColumns={
            @JoinColumn(name="entityid",referencedColumnName="id"),
            @JoinColumn(name="entitysource",referencedColumnName="source")
         })
    @MapKeyJoinColumn(name="secondaryid")
    @Column(name = "VALUE")
    private Map<Secondary, String> domainConfig = new HashMap<Secondary, String>(); 
    

    我不清楚何时使用@ElementCollection,何时使用@OneToMany。我认为因为值是原语正确的注释是@ElementCollection。

    【讨论】:

    • 是的,但是 JDO XML 和注释对于在哪里使用它们会更加清晰。
    猜你喜欢
    • 2010-10-29
    • 2010-10-22
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    相关资源
    最近更新 更多