将两个类的Hibernate映射到表中的一行



是否可以在Hibernate 中将两个类映射到表中的单行中

我有两个班:

public class Student implements java.io.Serializable {
private int studentId;
private String studentName;
public Student() {
}
public int getStudentId() {
    return this.studentId;
}
public void setStudentId(int studentId) {
    this.studentId = studentId;
}
public String getStudentName() {
    return this.studentName;
}
public void setStudentName(String studentName) {
    this.studentName = studentName;
}
}

和:

public class Address implements java.io.Serializable {
private String street;
private String city;
public Address() {
}
public String getStreet() {
    return street;
}
public void setStreet(String street) {
    this.street = street;
}
public String getCity() {
    return city;
}
public void setCity(String city) {
    this.city = city;
}

我想创建一个表:

CREATE TABLE  "STUDENT" 
("STUDENTID" NUMBER(10,0) PRIMARY KEY, 
"STUDENTNAME" VARCHAR2(250), 
"STREET" VARCHAR2(250), 
"CITY" VARCHAR2(250)
)

并从STUDENT类映射STUDENTID和STUDENTNAME,从ADDRESS类映射STREET和CITY。

我目前所做的映射如下:

<hibernate-mapping>
<class name="com.vaannila.student.Address" table="STUDENT">
<id>
<generator class="assigned"/>
</id>
<property name="street" column="SREET" type="string" length="250"/>
<property name="city" column="CITY" type="string" length="250"/>
</class>
</hibernate-mapping>

和:

<hibernate-mapping>
<class name="com.vaannila.student.Student" table="STUDENT">
<id name="studentId" column="STUDENTID" type="int"/>
<property name="studentName" column="STUDENTNAME" type="string" length="250"/>
</class>
</hibernate-mapping>

我收到错误:

Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/vaannila/student/Address.hbm.xml
Caused by: org.hibernate.MappingException: must specify an identifier type: com.vaannila.student.Address

请帮助

从Java对象和数据库实体的角度来看,这是一个糟糕的设计。看看你的地址配置文件——我想你可以看到它在哪里崩溃了,你试图定义一个id字段就证明了这一点。请始终记住您试图建模的内容,在这种情况下,学生地址。如果这两个实体总是一对一的,那么继续合并Address和Student类(而不是试图将它们分开)。

当然,我想你会发现这种关系真的是多对一的。如果我们在这里谈论的是大学,那么它是"非常多对一"。Vaanila上的例子是这样构造的,这是有原因的,我建议详细研究它们:

http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-one-1.html

您应该能够很容易地做到这一点。以下是如何使用另一个问题的注释:

单表继承WITH鉴别器列

如果需要的话,您必须自己找到XML的翻译!

是的,您可以在xml中使用组件标记。

最新更新