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