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

দুটি সত্তার মধ্যে এক-এক সম্পর্ক এমন একটি সম্পর্ক যেখানে পিতামাতার প্রতিটি দৃষ্টান্ত শিশু সত্তার ঠিক একটি উদাহরণের সাথে মিলে যায় এবং বিপরীতটিও সত্য।

উদাহরণস্বরূপ, একটি মিউজিক স্ট্রিমিং অ্যাপ বিবেচনা করুন যেখানে ব্যবহারকারীর নিজস্ব গানের একটি লাইব্রেরি রয়েছে। প্রতিটি ব্যবহারকারীর শুধুমাত্র একটি লাইব্রেরি আছে, এবং প্রতিটি লাইব্রেরি ঠিক একজন ব্যবহারকারীর সাথে মিলে যায়। অতএব, User সত্তা এবং Library সত্তার মধ্যে এক-এক সম্পর্ক রয়েছে।

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

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

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

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

কোটলিন

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

@Entity
data class Library(
    @PrimaryKey val libraryId: Long,
    val userOwnerId: Long
)

জাভা

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

@Entity
public class Library {
    @PrimaryKey public long libraryId;
    public long userOwnerId;
}

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

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

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

কোটলিন

data class UserAndLibrary(
    @Embedded val user: User,
    @Relation(
         parentColumn = "userId",
         entityColumn = "userOwnerId"
    )
    val library: Library
)

জাভা

public class UserAndLibrary {
    @Embedded public User user;
    @Relation(
         parentColumn = "userId",
         entityColumn = "userOwnerId"
    )
    public Library library;
}

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

কোটলিন

@Transaction
@Query("SELECT * FROM User")
fun getUsersAndLibraries(): List<UserAndLibrary>

জাভা

@Transaction
@Query("SELECT * FROM User")
public List<UserAndLibrary> getUsersAndLibraries();