Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

191
Visualizações
Habitación de uno a muchos, a muchos

Estoy un poco confundido sobre cómo debo configurar una clase de datos que consta de dos listas.

Tengo una clase de datos que se ve así

 @Entity(tableName = "recipe") data class Recipe( @PrimaryKey(autoGenerate = false) val recipeName: String, //val keyIngrediens: List<KeyIngredient>, //val steps: List<steps>

Entonces, para KeyIngrediens , lo configuré así y funciona perfectamente sin problemas

 @Entity data class KeyIngredients( @PrimaryKey(autoGenerate = false) val title: String, val image: String, val undertitle: Int, val recipeName: String ) data class RecipeWithkeyIngredients( @Embedded val recipe: Recipe, @Relation( parentColumn = "recipeName", entityColumn = "recipeName" ) val keyIngredients: List<KeyIngredients> )

Básicamente, conseguí que funcionara con una lista y un objeto, pero estoy un poco confundido sobre cómo debo manejarlo cuando tengo dos listas en un solo objeto. En este momento estoy llamando a RecipeWithKeyIngredients que devuelve el objeto de receta con la lista de ingredientes clave, pero no sé cómo hacer que también contenga la lista de pasos.

En resumen, debería ser como RecipeWithkeyIngredientsANDsteps si eso es posible.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Esto no es suficiente para las recetas. Una receta contiene muchos ingredientes, un ingrediente pertenece a muchas recetas. Por lo tanto, debe manejarse con una relación de muchos a muchos.

 @Entity data class Recipe( @PrimaryKey val recipeId: Long, val name: String ) @Entity data class KeyIngredient( @PrimaryKey val keyIngredientId: Long, val title: String, val image: String, val undertitle: Int, ) @Entity data class Step( @PrimaryKey val stepId: Long, val instruction: String, val stepRecipeId: Long ) @Entity( primaryKeys = ["recipeId", "keyIngredientId"] ) data class RecipeKeyIngredient( val recipeId: Long, val keyIngredientId: Long )

Obtener la lista de ingredientes de una receta.

 data class RecipeWithIngredients ( @Embedded val recipe: Recipe, @Relation( parentColumn = "recipeId", entity = KeyIngredient::class, entityColumn = "ingredientId", associateBy = Junction( value = RecipeKeyIngredient::class, parentColumn = "recipeId", entityColumn = "keyIngredientId" ) ) val keyIngredients: List<KeyIngredient> )

Obtén la lista de recetas con el mismo ingrediente

 data class IngredientWithRecipes( @Embedded val ingredient: Ingredient, @Relation( parentColumn = "ingredientId", entity = Recipe::class, entityColumn = "recipeId", associateBy = Junction( value = RecipeKeyIngredient::class, parentColumn = "ingredientId", entityColumn = "recipeId" ) ) val recipes: List<Recipe> )

Ahora puede consultar la base de datos para obtener el resultado como:

 @Dao interface RecipeKeyIngredientDao { @Query("SELECT * FROM Recipe") fun getRecipeWithIngredients(): LiveData<List<RecipeWithIngredients>> @Query("SELECT * FROM KeyIngredient") fun getIngredientWithRecipes(): LiveData<List<IngredientWithRecipes>> }

Para la otra parte de la pregunta, una receta generalmente contiene un conjunto específico de pasos (¿instrucciones?) Y para definir la relación entre la receta y los pasos, necesitará una relación anidada que defina una relación de uno a muchos entre la receta y los pasos, y obtener el receta de IngredientsOfRecipe ya modelados en lugar de la tabla de Recetas que dará recetas con ingredientes. Modela lo mismo que

 data class RecipeWithIngredientsAndSteps( @Embedded val recipe: IngredientsOfRecipe @Relation( entity = Step::class, parentColumn = "recipeId", entityColumn = "stepRecipeId" ) val steps: List<Step> )

Consulta usando una sola transacción de la siguiente manera

 @Transaction @Query("SELECT * FROM Recipe") fun getRecipeWithIngredientsAndSteps(): List<RecipeWithIngredientsAndSteps>

Por favor refiérase a esto

over 4 years ago · Santiago Trujillo Relatório

0

Asumiendo su clase de datos de Pasos de la siguiente manera:

 @Entity data class Steps( @PrimaryKay val stepName: String, val duration: Int, val recipeName: String, val rank: Int )
 data class RecipeWithKeyIngredientsAndSteps( @Embedded recipe: Recipe, @Relation( parentColumn = "recipeName", entityColumn = "recipeName" ) val keyIngredients: List<KeyIngredients>, @Relation( parentColumn = "recipeName", entityColumn = "recipeName" ) val steps: List<Steps> )

Al final sigue siendo una relación de uno a N

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda