How to define an inner class as a UDT in @Entity and use the UDT?
com.scylladb java-driver-core 4.19.0.1 <dependency>
<groupId>com.scylladb</groupId>
<artifactId>java-driver-mapper-runtime</artifactId>
<version>4.19.0.1</version>
</dependency>
<dependency>
<groupId>com.scylladb</groupId>
<artifactId>java-driver-mapper-processor</artifactId>
<version>4.19.0.1</version>
</dependency>
package com.xgy.entity;
import com.datastax.oss.driver.api.mapper.annotations.*;
import com.datastax.oss.driver.api.mapper.entity.naming.NamingConvention;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.UUID;
import static com.datastax.oss.driver.api.mapper.annotations.SchemaHint.TargetElement.UDT;
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Entity(defaultKeyspace = “novel”)
@NamingStrategy(convention = NamingConvention.LOWER_CAMEL_CASE)
@CqlName(“character_”)
public class Character {
@PartitionKey
@CqlName("novel_id")
private UUID novelId;
@ClusteringColumn
@JsonProperty("name")
private String name;
@JsonProperty("summary")
private String summary;
@JsonProperty("storyChain")
@CqlName("story_chain")
private List<StoryNode> storyChain;
@Data
@AllArgsConstructor
@NoArgsConstructor
@SchemaHint(targetElement = UDT)
@NamingStrategy(convention = NamingConvention.LOWER_CAMEL_CASE)
@CqlName("story_node")
public static class StoryNode {
@JsonProperty("from")
@CqlName("from_chapter")
private String from;
@JsonProperty("to")
@CqlName("to_chapter")
private String to;
@JsonProperty("action")
@CqlName("action")
private String action;
@JsonProperty("context")
@CqlName("context")
private String context;
}
}
//CREATE TYPE novel.story_node (
// from_chapter text,
// to_chapter text,
// action text,
// context text
//);
//
//CREATE TABLE novel.character_ (
// novel_id uuid,
// name text,
// summary text,
// story_chain list<frozen<story_node>>,
// PRIMARY KEY (novel_id, name)
//);
Caused by: java.lang.IllegalArgumentException: The CQL ks.table: novel.character_ defined in the entity class: com.xgy.entity.Character declares type mappings that are not supported by the codec registry:
Field: story_chain, Entity Type: com.xgy.entity.Character$StoryNode, CQL type: UDT(novel.story_node)