У меня есть таблица, как показано ниже:
CREATE TABLE recipes
(
id INT AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
components JSON,
active BOOLEAN NULL DEFAULT TRUE,
PRIMARY KEY (id),
UNIQUE KEY (name)
)
CHARACTER SET "UTF8"
ENGINE = InnoDb;
Я создал класс pojo, как показано ниже:
@JsonIgnoreProperties(ignoreUnknown = true)
public class CValueRecipeV2
{
@JsonProperty("components")
@JsonAlias("matcher.components")
@Column(name = "components")
@Valid
private List<CComponentV2> mComponents;
@JsonProperty("name")
@Column(name = "name")
private String name;
public List<CComponentV2> getComponents()
{
return mComponents;
}
public void setComponents(List<CComponentV2> mComponents)
{
this.mComponents = mComponents;
}
public String getName()
{
return mName;
}
public void setName(String mName)
{
this.mName = mName;
}
}
другой класс
@JsonIgnoreProperties(ignoreUnknown = true)
public class CComponentV2
{
@JsonProperty("shingle_size")
@JsonAlias("shingleSize")
@CShingleField
private Integer mShingleSize;
public Integer getmShingleSize()
{
return mShingleSize;
}
public void setmShingleSize(Integer mShingleSize)
{
this.mShingleSize = mShingleSize;
}
}
Теперь я пытаюсьизвлечь запись из базы данных, используя JOOQ. Но я не могу преобразовать строку компонента json в класс компонента.
Я читаю данные из таблицы, как указано ниже:
context.dsl().select(RECIPES.asterisk())
.from(RECIPES)
.where(RECIPES.NAME.eq(name))
.fetchInto(CValueRecipeV2.class);
В базе данных у меня есть следующая запись.
ID name components active
1 a [{"shingle_size=2"}] true
При получении данных я получаю следующую ошибку
Caused by: org.jooq.exception.DataTypeException: Cannot convert from {shingle_size=2} (class java.util.HashMap) to class com.ac.config_objects.CComponentV2
Я новичок в JOOQ. Пожалуйста, дайте мне знать, если я что-то упустил. Заранее спасибо.