Java HIbernate工具反向工程在唯一列上创建集合

Java HIbernate工具反向工程在唯一列上创建集合,java,hibernate,reverse-engineering,hibernate-tools,Java,Hibernate,Reverse Engineering,Hibernate Tools,有一个表a和一个表B,a有一个fk到B。 在中,此FK的列是唯一且可为空的。这意味着,a B仅作为a的最大值引用 但是hibernate工具反向工程正在生成POJO,如下所示: Pojo A和字段B。好的,这是正确的。 Pobo B带有一组a。不,它不是,应该是单个字段a 怎么了?我错过了什么 这是我的reveng.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-reverse-engineering

有一个表a和一个表B,a有一个fk到B。 在中,此FK的列是唯一且可为空的。这意味着,a B仅作为a的最大值引用

但是hibernate工具反向工程正在生成POJO,如下所示:

Pojo A和字段B。好的,这是正确的。 Pobo B带有一组a。不,它不是,应该是单个字段a

怎么了?我错过了什么

这是我的reveng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering SYSTEM "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

<hibernate-reverse-engineering>

<type-mapping>
    <sql-type jdbc-type="BIGINT" hibernate-type="java.math.BigInteger" />
    <sql-type jdbc-type="NUMERIC" precision="19" hibernate-type="java.math.BigInteger"/>
    <sql-type jdbc-type="NUMERIC" precision="10" not-null="true" hibernate-type="int"/>
    <sql-type jdbc-type="NUMERIC" precision="10" not-null="false" hibernate-type="java.lang.Integer"/>
    <sql-type jdbc-type="NUMERIC" precision="4" not-null="true" hibernate-type="byte"/>
    <sql-type jdbc-type="NUMERIC" precision="4" not-null="false" hibernate-type="java.lang.Byte"/>
    <sql-type jdbc-type="OTHER" hibernate-type="timestamp"/>
</type-mapping>

<table-filter match-name="MLOG.*"  exclude="true" /> 
<table-filter match-name="RUPD.*"  exclude="true" />  

<!-- Forzamos a que el id sea Integer. Al eliminar el autoincremental hibernate pasa este campo a int.-->
<!-- Se cambia el codigo para que no afecte el tipo-->
<!--
<table name="cpanel_bloque_canal" catalog="ob_cpanel"> 
    <primary-key>                       
        <key-column name="idBloque" type="java.lang.Integer"/>
    </primary-key>
</table>
-->


映射是正确的,因为在这种情况下,表B中的一条记录引用了表A中的多条记录

范例

  • 表A数据:
  • ID来自
  • 11
  • 2.1
  • 3.2

  • 表B数据:

  • 身份证
  • 一,
  • 二,
如果您从表B中获取记录并将A记录加入其中,您将得到以下结果:


对于B ID 1:ID(表A)1;ID(TableA)2——这必须放入一个集合中,这就是为什么会得到这样的pojo结构。

您可以发布相关的hibernate.reveng.xml文件吗?但是如果a的FK是唯一的,那么表B中的一条记录如何被表a中的多条记录引用?您使用的是什么数据库?据我所知,您描述的场景并不意味着关系是一对一的。在mysql中创建一对一时请看一下:这并不能解决我的问题,因为关系应该是空的。我的意思是,关系是0:1-1