是否可以将两个类映射到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
请帮忙
答案 0 :(得分:0)
从Java对象和数据库实体的角度来看,这是糟糕的设计。查看您的地址配置文件 - 我认为您可以看到它崩溃的地方,通过您尝试定义 id 字段来证明。始终尝试记住您要模拟的内容,在本例中为学生和地址。如果这两个实体总是一对一,那么继续巩固地址和学生课程(而不是试图将它们分开)。
当然,我认为你会发现这种关系真的很多对一。如果我们在这里谈论大学而不是非常多对一。关于Vaanila的例子是有原因的结构,我建议详细研究它们:
http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-one-1.html
答案 1 :(得分:0)
你应该可以很容易地做到这一点。以下是使用其他问题的注释的方法:
Single Table Inheritance WITHOUT Discriminator column
如果需要,你必须自己找出XML的翻译!
答案 2 :(得分:0)
是的,您可以在xml中使用组件标记。