Проще говоря, они позволяют работать с полями в БД, будто они реально там находятся в виде кастомных типов(списки, data-классы, etc). Для этого пишется специальный класс, в котором вы пишете логику, по которой на лету они будут конвертироваться из примитивного типа в нужный и наоборот. Вот там вам придется костылить с сериализатором и типами. Для начала почитайте про создание конвертеров хотя бы на StartAndroid в цикле статей по Room(Architecture Components).