হাইবারনেটে স্ট্রিংয়ে এনাম ম্যাপিং


93

আমি একটি বিভাগ হাইবারনেট মডেল পেয়েছি:

@Entity
@Table(name = "category")
public class Category {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "id")
    private long id;

    @Column(name = "type")
    private String type;

যা একটি টাইপ স্ট্রিং ক্ষেত্র আছে। এছাড়াও আমি একটি জাভা এনাম পেয়েছি যা একটি বিভাগের একটি ধরণের প্রতিনিধিত্ব করে:

public enum CategoryType {
    INCOME, OUTCOME;
}

যা আমি স্ট্রিং টাইপের পরিবর্তে ব্যবহার করতে চাই। এসকিউএল ভার্চার প্যারামিটারে দুটি স্বতন্ত্র মান গ্রহণ করে: হয় CategoryIncomeবা হয় CategoryOutcome। আমি বিভাগের মডেল বর্গটি একটি এনাম ভেরিয়েবলটি গ্রহণ করতে চাই - এবং যখনই হাইবারনেট এটির জন্য জিজ্ঞাসা করবে তখন এটি স্ট্রিংয়ের জন্য কোনওভাবে ম্যাপ করুন।

এটা কি সম্ভব?

উত্তর:


185

হ্যাঁ, সম্ভব এটা করা উচিত:

@Enumerated(EnumType.STRING)
@Column(name = "category_type")
private CategoryType categoryType;

15
আপনি আরও এগিয়ে যেতে পারেন এবং এখন জেপিএ ২.১ প্রকাশিত হওয়ায় ব্যবহার করুন@Converter(autoApply = true) public class CategoryTypeConverter implements javax.persistence.AttributeConverter <CategoryType, String>
— সদস্যবৃন্দ

6
কারো জন্য যারা একই সমস্যা থাকতে পারে ..: আমি এই টীকা ভালো মাঠের পরিবর্তে আমার সংগ্রহকারী পদ্ধতি শুরু করা হয় যাতে ছিল: @Enumerated(EnumType.STRING) public CategoryType getCategoryType() { return this.categoryType; }।
— জিরোঅন

আমি hibernate.ddl-auto=updateমোডে ছিলাম এবং আমার এনামটি ইন্টি থেকে বার্চারে রূপান্তর করতে আমার টেবিলটি ফেলে দিয়ে হাইবারনেট করতে হয়েছিল। আশা করি এটি অনুরূপ সমস্যা সহকারে কাউকে সহায়তা করবে।
— আরশসফ্ট

আপনার গণনার মানটি যদি এনওরেটেড এনটোটেশন সত্ত্বেও অধ্যক্ষ হিসাবে রচনা করা হয় তবে stackoverflow.com/questions/44864675/… দেখুন ।
— মেটাকমেকার

আমি এটি গেটারে রাখি না। ভেরিয়েবল ডিক্লেয়ারেশনে এটি রাখা ভাল কাজ করে, যা লম্বোকের পক্ষে @ ডেটা ইত্যাদি ব্যবহার করে ভাল I আমি যদি প্রতিটি এনটোট না করে সমস্ত এনামগুলিতে এটি প্রয়োগ করতে চাই তবে কী হবে?
— অ্যান্ড্রু

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.