我有一个有实体的JSON。该实体有3个属性:
firstName
,FirstName
,fIRStName
。在我的POJO中,我使用的是来自Lombok的@Data
注释
{
"name": "AtQueryEntity",
"attributes": [
{
"name": "FirstName",
"type": "STRING",
"required": true
},
{
"name": "fIRStName",
"type": "STRING",
"required": true
},
{
"name": "FIRSTName",
"type": "STRING",
"required": true
}
]
}
问题是MYSQL只创建了2列。
Id
FIRSTName
如何确保为所有属性创建列?
我知道惯例是属性应该是唯一的,属性的第一个字母应该是小写的但是我有一个用例,其中属性只能通过大写或小写来区分。
在Hibernate或JPA中是否存在限制,其中它不会为仅由大小写区分的属性创建列?或者我在这里遗漏了什么?
答案 0 :(得分:0)
我有一个用例,其中属性只能通过大写或小写来区分。
fOrGeT iT! Hibernate中有ImplicitNamingStrategy
和PhysicalNamingStrategy
,JPA2可能支持也可能不支持,MySQL支持引用名称,因此您可以获得它以某种方式工作。
与此同时,你可以肯定,你很快就会遇到一个根本不支持它的工具。使用不同的名称只是一个很大的痛苦,它肯定会让你多次惊喜,无论是使用Java Bean还是Windows或其他什么。
字段和getter / setter名称之间的Java Bean转换不是双射的,因此您将遇到问题。 Lombok是或者不完全符合Java Beans,取决于你如何理解这个愚蠢的标准(java.beans
本身内部不一致w.r.t。)。
不,没有用例。虽然您可能会从第三方获得此类数据,但这并不意味着您应该使用它们编写您的程序。这些名称对于工具和程序员来说都是痛苦的。只需尽快清理您的输入并对输出ALAP进行去清理。
即使_1
和_2
也是比FirstName
和fIRStName
更好的标识符,因此避免使用后者不会出错。
感谢。我需要添加一个验证来禁止具有相同字母频率的属性名称。
这与列名无关。这意味着您需要一个名为column_name
的列,您可以在其中存储"FirstName"
,"fIRStName"
和"FIRSTName"
等字符串。这完全没问题。