我正在使用带有restful接口的hibernate,我在三个表之间有一对多的关系,当我想从mysql数据库中检索这些表中的记录时(使用curl命令)我也得到了它们的id(这是auto - 生成但我不希望它们被检索,有什么方法可以做到这一点吗?
这是我检索的结果:
[
{
"deviceID": "no id",
"deviceName": "no name",
"deviceType": "no_type",
***"id": 1,***
"newMeasurements": [
{
"measurementT": "type",
"measurementU": "unit",
"measurementV": "value",
"measurementDateTime": "15.09.9898",
***"id": 1***
}
],
"Oldmeasurement": [
{
"measurementTime": "12.02.1586",
"sampleR": "rate",
"sampleU": "Unit",
"sampleT": "Type",
"sampleU": "Unit",
"sampleV": "noValues",
***"id": 1***
}
],
***"patientID": 1***
}
]
答案 0 :(得分:0)
在回答你的问题之前,我想就一些事情给你一瞥/背景。 在OOP的情况下,几乎所有东西都是对象以及如何识别,比较两个相同类型的实例在这里起着关键作用。有一个称为平等和身份的概念,用于识别和比较对象(我希望你知道它)。
类似地,hibernate中还有另一种称为数据库标识的机制来识别/比较两个相同类型的实例。这意味着它是一种确定表示/指向同一行的两个相同类型实例的方法。这只能通过在检索期间要忽略的标识符来实现。
底线是Id对于识别对象是非常必要的,因为hibernate根据值而不是根据其内存位置(标识)来比较对象
创建实体的推荐方法是
Class MyEntity
{
@id
@column(name=”id”)
//Id generation strategy goes here.
Private int id;
@column(name=”name”)
Private String name;
Public int getId()
{
return this.id;
}
//Getter and setters of name
}
您可能已经注意到缺少ID的setter方法。原因是不允许/推荐更改身份。希望这有用!