我有这个简单的表
类型有FK,名称有PK。
我的问题是type是类型的索引而不是实际的字符串。因此,当我向数据库添加TestCase
时,我必须给索引而不是简单地编写String类型。
Hibernate是否实现了执行此操作的功能,还是我必须执行另一个查询来检查与该typeName对应的索引是什么?
public static void addTestCase(String testName, String type, MultipartFile file, String user) {
byte[] fileByte;
Date date = new Date();
final DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String creationDate = sdf.format(date);
try {
fileByte = file.getBytes();
TestCase testCase = new TestCase(testName,type,fileByte,creationDate,user);
Database.addToDatabase(testCase);
} catch (IOException e) {
e.printStackTrace();
}
}
测试用例
public class TestCase {
private int id;
private String name;
private String type;
private byte[] data;
private String creationDate;
private String createdBy;
public TestCase() {
}
public TestCase(String name, String type, byte[] data, String creationDate, String createdBy) {
this.name = name;
this.type = type;
this.data = data;
this.creationDate = creationDate;
this.createdBy = createdBy;
}
...get and setters
XML
<hibernate-mapping>
<class name="com.atp.Model.TestCases.TestCase" table="testCases">
<meta attribute="class-description">
This class contains the testCases details.
</meta>
<id name="id" type="int" column="idtestCase">
<generator class="native"/>
</id>
<property name="name" column="name" type="string"/>
<property name="type" column="type" type="string"/>
<property name="data" column="data" type="binary"/>
<property name="creationDate" column="creationDate" type="string"/>
<property name="createdBy" column="createdBy" type="string"/>
</class>
答案 0 :(得分:0)
这似乎是oneToMany关系(许多测试用例属于一种类型)。检查如何在hibernate中执行此操作,例如在onetomany example中。
基本上,你的testCase对象应该有一个类型对象,而不仅仅是一个简单的字符串,这个对象应该有JPA或hibernate注释。
基本上,
您在TestCase中的类型应该是一个对象:
private Type type;
您应该创建一个带有测试用例集的 Type 类:
private Set<TestCases> testCases;
你的type.hbm.xml应该有:
<set name="testCases" inverse="true" cascade="all">
<key column="TYPE_ID" not-null="true" />
<one-to-many class="TestCase"/>
</set>
你的testcase.hmb.xml应该有:
<many-to-one name="type" class="Type"
column="TYPE_ID" not-null="true"/>