এক-থেকে-অনেক সম্পর্ককে সংজ্ঞায়িত করুন এবং জিজ্ঞাসা করুন, এক-থেকে-অনেক সম্পর্কের সংজ্ঞা দিন এবং অনুসন্ধান করুন

দুটি সত্তার মধ্যে এক থেকে একাধিক সম্পর্ক এমন একটি সম্পর্ক যেখানে পিতামাতার সত্তার প্রতিটি দৃষ্টান্ত শিশু সত্তার শূন্য বা তার বেশি দৃষ্টান্তের সাথে মিলে যায়, তবে শিশু সত্তার প্রতিটি দৃষ্টান্ত শুধুমাত্র পিতামাতার সত্তার ঠিক একটি উদাহরণের সাথে মিলে যেতে পারে৷

মিউজিক স্ট্রিমিং অ্যাপের উদাহরণে, ধরুন ব্যবহারকারীর প্লেলিস্টে তাদের গান সাজানোর ক্ষমতা আছে। প্রতিটি ব্যবহারকারী যত খুশি প্লেলিস্ট তৈরি করতে পারে, কিন্তু ঠিক একজন ব্যবহারকারী প্রতিটি প্লেলিস্ট তৈরি করে। অতএব, User সত্তা এবং Playlist সত্তার মধ্যে একটি থেকে একাধিক সম্পর্ক রয়েছে৷

আপনার ডাটাবেসে এক-থেকে-অনেক সম্পর্কগুলিকে সংজ্ঞায়িত করতে এবং অনুসন্ধান করতে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. সম্পর্ক সংজ্ঞায়িত করুন : উভয় সত্তার জন্য ক্লাস তৈরি করুন, শিশু সত্তাটি পিতামাতার প্রাথমিক কী উল্লেখ করে।
  2. সত্তাগুলিকে জিজ্ঞাসা করুন : একটি নতুন ডেটা ক্লাসে সম্পর্কের মডেল করুন এবং সম্পর্কিত ডেটা পুনরুদ্ধার করার জন্য একটি পদ্ধতি প্রয়োগ করুন৷

সম্পর্কের সংজ্ঞা দাও

এক-থেকে-অনেক সম্পর্ক সংজ্ঞায়িত করতে, প্রথমে দুটি সত্তার জন্য একটি শ্রেণী তৈরি করুন। এক-এক সম্পর্কের মতো, শিশু সত্তাকে অবশ্যই একটি পরিবর্তনশীল অন্তর্ভুক্ত করতে হবে যা পিতামাতার সত্তার প্রাথমিক কীর একটি রেফারেন্স।

কোটলিন

@Entity
data class User(
    @PrimaryKey val userId: Long,
    val name: String,
    val age: Int
)

@Entity
data class Playlist(
    @PrimaryKey val playlistId: Long,
    val userCreatorId: Long,
    val playlistName: String
)

জাভা

@Entity
public class User {
    @PrimaryKey public long userId;
    public String name;
    public int age;
}

@Entity
public class Playlist {
    @PrimaryKey public long playlistId;
    public long userCreatorId;
    public String playlistName;
}

সত্তা জিজ্ঞাসা

ব্যবহারকারীদের তালিকা এবং সংশ্লিষ্ট প্লেলিস্টগুলি জিজ্ঞাসা করতে, আপনাকে প্রথমে দুটি সত্তার মধ্যে এক থেকে একাধিক সম্পর্কের মডেল করতে হবে

এটি করার জন্য, একটি নতুন ডেটা ক্লাস তৈরি করুন যেখানে প্রতিটি উদাহরণে পিতামাতার সত্তার একটি দৃষ্টান্ত এবং সমস্ত সংশ্লিষ্ট চাইল্ড সত্তা দৃষ্টান্তগুলির একটি তালিকা থাকে৷ সন্তান সত্তার উদাহরণে @Relation টীকা যোগ করুন, parentColumn এর সাথে প্যারেন্ট এন্টিটির প্রাথমিক কী কলামের নামের সাথে সেট করা হয়েছে এবং entityColumn চাইল্ড এন্টিটির কলামের নামের সাথে সেট করা হয়েছে যা পিতামাতার সত্তার প্রাথমিক কীকে উল্লেখ করে।

কোটলিন

data class UserWithPlaylists(
    @Embedded val user: User,
    @Relation(
          parentColumn = "userId",
          entityColumn = "userCreatorId"
    )
    val playlists: List<Playlist>
)

জাভা

public class UserWithPlaylists {
    @Embedded public User user;
    @Relation(
         parentColumn = "userId",
         entityColumn = "userCreatorId"
    )
    public List<Playlist> playlists;
}

অবশেষে, DAO ক্লাসে একটি পদ্ধতি যোগ করুন যা ডেটা ক্লাসের সমস্ত দৃষ্টান্ত প্রদান করে যা পিতামাতার সত্তা এবং শিশু সত্তাকে জোড়া দেয়। এই পদ্ধতিতে দুটি প্রশ্ন চালানোর জন্য রুম প্রয়োজন, তাই এই পদ্ধতিতে @Transaction টীকা যোগ করুন যাতে পুরো অপারেশনটি পারমাণবিকভাবে সঞ্চালিত হয়।

কোটলিন

@Transaction
@Query("SELECT * FROM User")
fun getUsersWithPlaylists(): List<UserWithPlaylists>

জাভা

@Transaction
@Query("SELECT * FROM User")
public List<UserWithPlaylists> getUsersWithPlaylists();