java - 如何在hibernate java中为给定的xml使用注释

Posted

技术标签:

【中文标题】java - 如何在hibernate java中为给定的xml使用注释【英文标题】:How use annotation for given xml in hibernate java 【发布时间】:2016-11-21 20:06:21 【问题描述】:

我在 xml 中有以下代码,我如何在下面的代码中使用注释

     <hibernate-mapping>
<class name="com.gf.DataDetail" table="DATADETAIL">

    <id name="DataId" type="java.lang.Long">
        <column name="DATA_ID" />
        <generator class="identity" />
    </id>
    <property name="recordId" type="java.lang.Long">
        <column name="RECORD_ID" />
    </property>
    <property name="recordName" type="java.lang.String">
        <column name="RECORD_NAME"></column>
    </property>

               <set name="detail" table="DETAIL" 
            inverse="true" lazy="true" fetch="select">
        <key>
            <column name="DATA_ID" not-null="true" />
        </key>
        <one-to-many class="com.gf.detail" />
    </set>

  <set name="loadErrors" table="LOADERRORS" 
            inverse="true" lazy="true" fetch="select">
        <key>
            <column name="DATA_ID" not-null="true" />
        </key>
        <one-to-many class="com.gf.loadErrors" />
    </set>
</class>

在java文件中我有

@Entity  
@Table(name = "DATADETAIL")

@JsonIgnoreProperties(ignoreUnknown = true)
public class BatchMetaData 

    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "DATA_ID")  
    private Number DATA_ID;

    @Column(name = "RECORD_ID")  
    private Number RECORD_ID;

    @Column(name = "RECORD_NAME")  
    private String RECORD_NAME;         

@OneToMany(fetch = FetchType.LAZY, mappedBy = "DATADETAIL")
    private Set<DETAIL> detail = 
            new HashSet<DETAIL>(0);

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "DATADETAIL")
    private Set<LOADERRORS> loadErrors = 
            new HashSet<LOADERRORS>(0);



    public Set<DETAIL> getDetail() 
        return detail;
    
    public void setDetail(Set<DETAIL> detail) 
        this.detail = detail;
    
    public Set<LOADERRORS> getLoadErrors() 
        return LoadErrors;
    
    public void setLoadErrors(Set<LOADERRORS> LoadErrors) 
        this.LoadErrors = LoadErrors;
           

我只是在这里从 xml 文件转换为注释文件。我是否将 oneto 映射注释应用到错误的位置。对此有任何建议。

【问题讨论】:

你尝试了什么? “请给我代码”不是本网站的运作方式 @JimHawkins 请查看更新后的问题。 【参考方案1】:

这应该可行:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent name")

mappedBy 应该是父对象名称。

【讨论】:

我应该使用 '@joincolumn' 作为 DATA_ID 列,因为它们在 xml 文件中使用键标记 详细表是您共享的 xml 中的关系所有者。所以 mappedBy 就足够了,因为它表明父对象不会控制关系 根据解释,我在 xml 中有多个带有 key 标签的表,如果是这样,我应该使用 joincolumn 注释。请检查我更新的查询,如果有错误,请更正。

以上是关于java - 如何在hibernate java中为给定的xml使用注释的主要内容,如果未能解决你的问题,请参考以下文章

java - 如何在Java Spring和Hibernate的单个事务中管理2个DAO方法?

如何使用 Java / Hibernate 在 SQL 中自动插入当前日期

java - 如何在java桌面应用程序中使用spring(事务)和hibernate创建嵌入式H2 DB?

java - 如何在hibernate java中为给定的xml使用注释

如何在 Hibernate/JPA 中使用 Java 8 Date 库? [复制]

如何像hibernate一样在Java中灵活生成字符串