Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

190
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!