@ কলাম (গুলি) @ManyToOne সম্পত্তিতে অনুমোদিত নয়


136

আমি হিসাবে সম্পত্তি হিসাবে একটি JPA সত্তা আছে

@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;

কিন্তু আমি যখন JBoss 6 এ স্থাপন করি তখন অ্যাপ্লিকেশনটি একটি ত্রুটি বলেছিল:

org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property

আমি হাইপারনেট ৩.৫ ব্যবহার করি জেপিএ ২.০ বাস্তবায়ন হিসাবে।

বিদেশী কী কলামটি উল্লেখ করতে আমার কী ব্যবহার করা উচিত?


হতে পারে @ManyToOne টিকা মুছে ফেলা আপনার সমস্যার সমাধান করে।
ℛɑƒæĿᴿᴹᴿ

উত্তর:


287

এর @JoinColumnপরিবর্তে ব্যবহার করুন @Column:

@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;

13
কিন্তু কেন? তার কোন ব্যাখ্যা?
ওন্দ্রেজ টোকর

4
@ ওন্দ্রেজটোকার সম্ভবত আপনি এটি ব্যবহার @ManyToOneকরেছেন এবং "mappedBy"অন্যদিকে (বর্গ), যার অর্থ এই কলামটি (নামযুক্ত "LicenseeFK") একটি বিদেশী কী এবং তাই একটি যুক্ত কলাম। সুতরাং, এটি নামের সাথে একটি জড়িত কলাম "LicenseeFK"। আমি আশা করি এটি এখন পরিষ্কার হয়ে গেছে।
আলেকসান্দার

7

@JoinColumnএবং @Columnএকসাথে ব্যবহার করলে একই ত্রুটি ঘটবে। এটি কেবলমাত্র ব্যবহারের জন্য পরিবর্তন করুন: এটি @JoinColumnঠিক করতে।


9
আপনার উত্তরটি বেশ বিভ্রান্তিকর। আপনি M @ManyToOne পয়েন্ট সহ Col @ কলাম ব্যবহার করতে পারবেন না।
আবদন

1

@Column

JPA @Columnটীকা মৌলিক সত্তা বৈশিষ্ট্যাবলী জন্য, মত String, Integer, Date

সুতরাং, যদি সত্তার বৈশিষ্ট্যটির নাম অন্তর্নিহিত কলামের নামের চেয়ে পৃথক হয়, তবে @Columnকলামের নামটি স্পষ্টভাবে নির্দিষ্ট করতে আপনাকে এন্টোটেশনটি ব্যবহার করতে হবে:

@Column(name="created_on")
private LocalDate createdOn;

@JoinColumn

@JoinColumnটীকা একটি কাস্টমাইজ করতে ব্যবহার করা হয় পররাষ্ট্র কী কলামের নামের , এবং এটি শুধুমাত্র একটি সত্তা সমিতি সঙ্গে ব্যবহার করা যাবে।

সুতরাং, আপনার ক্ষেত্রে, যেহেতু আপনি কোনও @ManyToOneসমিতি ব্যবহার করছেন , আপনার ব্যবহারের প্রয়োজন @JoinColumn:

@ManyToOne(fetch=FetchTYpe.LAZY)
@JoinColumn(name="LicenseeFK")
private Licensee licensee;

লক্ষ্য করুন যে আমরা ডিফল্টরূপে, fetchবৈশিষ্ট্যটি সেট করেছি FetchType.LAZYকারণ FetchType.EAGERএটি ডিফল্টরূপে ব্যবহৃত হয় এবং এটি একটি ভয়ানক কৌশল। কেন আরও FetchType.LAZYউন্নত ডিফল্ট সে সম্পর্কে আরও তথ্যের জন্য এই নিবন্ধটি দেখুন

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