Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate映射-一个表中有两个映射_Java_Database_Hibernate_Mapping - Fatal编程技术网

Java Hibernate映射-一个表中有两个映射

Java Hibernate映射-一个表中有两个映射,java,database,hibernate,mapping,Java,Database,Hibernate,Mapping,在Hibernate中是否可以描述以下映射: +------+ +------+ |Table1| |Table2| +------+ +------+ |t1_id | -------+ |t2_id | +------+ +------- |t1_id | |data_1|

在Hibernate中是否可以描述以下映射:

+------+                 +------+
|Table1|                 |Table2|
+------+                 +------+
|t1_id | -------+        |t2_id |
+------+        +------- |t1_id |
                         |data_1|
                         |data_2|
                         +------+
用类,由
Table1
描述,有两个
Map
s:
{t2\u id:data\u 1}
{t2\u id:data\u 2}
,或者我绝对必须在两个表上划分它


如果您不介意,请使用
.hbm.xml
样式。

它只需要一个映射:

public class Table1 {
    private int id;
    private Map<String, Table2> map;
}

public class Table2 {
    private String data_1;
    private String data_2;
}
这是真的还是仅仅是?不幸的是,如果是的话,地图就不需要了,因为它将是一对多的关系。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-access="field" package="test">
    <class name="Table1" table="table1">
        <id column="ID" name="id">
            <generator class="native"/>
        </id>
        <map name="map" table="table2">
            <key column="TABLE1_ID"/>
            <map-key column="TABLE2_ID" length="32" type="string"/>
            <composite-element class="Table2">
                <property name="data_1" column="DATA_1" length="128"/>
                <property name="data_2" column="DATA_1" length="128"/>
            </composite-element>
        </map>
    </class>
</hibernate-mapping>
alter table table2 
    drop constraint FKCB773E242504FFD6;

drop table table1 if exists;

drop table table2 if exists;

create table table1 (
    ID integer generated by default as identity,
    primary key (ID)
);

create table table2 (
    TABLE1_ID integer not null,
    DATA_1 varchar(128),
    TABLE2_ID varchar(32) not null,
    primary key (TABLE1_ID, TABLE2_ID)
);

alter table table2 
    add constraint FKCB773E242504FFD6 
    foreign key (TABLE1_ID) 
    references table1;