我开始使用<forcedType>
不久前能够使用enum
对于已知类型。例如我有
<forcedType>
<name>AdminToolFeatureTypeConverter</name>
<expression>admin_tool_feature_type_id</expression>
</forcedType>
它将映射任何 admin_tool_featury_type_id
列到AdminToolFeatureType
enum
:
public enum AdminToolFeatureType {
BASIC, BASIC_PLUS;
public Long getValue() {
return this.ordinal() + 1L;
}
}
现在的问题是我总是将该列称为 admin_tool_featury_type_id
如果是FOREIGN KEY
但在表 admin_tool_feature_type
此栏简称为 id
:
CREATE TABLE admin_tool_feature_type (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
-- and so on ...
);
这就是我的问题 JOIN
上admin_tool_add_on_type
:
Map<AdminToolAddOnType, AdminToolAddOnDTO> fetchMap = this.ctx.select(
ADMIN_TOOL_ADD_ON.ID,
// ..
adminToolAddOnIdToken.field(ADMIN_TOOL_ADD_ON_TYPE.ADD_ON_ID_TOKEN)
)
.from(ADMIN_TOOL_ADD_ON)
// ..
.join(adminToolAddOnIdToken)
.on(adminToolAddOnIdToken.field(ADMIN_TOOL_ADD_ON_TYPE.ADMIN_TOOL_FEATURE_TYPE_ID).eq(adminToolFeatureType)
// ADMIN_TOOL_ADD_ON_TYPE.ID is type Long
// ADMIN_TOOL_ADD_ON.ADMIN_TOOL_ADD_ON_TYPE_ID is type AdminToolAddOnType
.and(adminToolAddOnIdToken.field(ADMIN_TOOL_ADD_ON_TYPE.ID).eq(ADMIN_TOOL_ADD_ON.ADMIN_TOOL_ADD_ON_TYPE_ID)))
问题是 ADMIN_TOOL_ADD_ON_TYPE.ID
类型为Long
但是ADMIN_TOOL_ADD_ON.ADMIN_TOOL_ADD_ON_TYPE_ID
类型为AdminToolAddOnType
.
现在的问题是解决此问题的最简单方法是什么。我不想重命名admin_tool_feature_type.id
进入admin_tool_feature_type.admin_tool_feature_type_id
因为这会干扰编码标准。
有没有简单的方法来扩展 <forcedType>
这样admin_tool_feature_type.id
将生成类型 AdminToolAddOnType
而不是Long
?
我的标题的意思是是否可以做类似的事情:
<forcedType>
<name>AdminToolFeatureTypeConverter</name>
<expression>admin_tool_feature_type_id</expression>
<!-- Could be a list of fully qualified names to columns -->
<fullyQualified>
admin_tool_feature_type.id
</fullyQualified>
</forcedType>
我已经尝试过,例如
<forcedType>
<name>AdminToolFeatureTypeConverter</name>
<expression>
<!-- also : my_database.admin_tool_feature_type.id, -->
admin_tool_feature_type.id,
admin_tool_feature_type_id
</expression>
</forcedType>
但这似乎 Not Acceptable 。
最佳答案
刚刚发现,如果您阅读文档的内容,这实际上是可能的:
<forcedType>
<name>AdminToolFeatureTypeConverter</name>
<expression>
my_database.admin_tool_feature_type.id|admin_tool_feature_type_id
</expression>
</forcedType>
必须使用 |
而不是 ,
来分隔表达式。我不知道为什么我认为它是逗号分隔的。
关于java - forcedType 可以接受列的完全限定名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080630/