में द्वितीयक तालिका पर भेदभावकर्ता कॉलम होना संभव है, मैं वर्तमान में जेपीए इकाइयों के लिए मौजूदा डीबी स्कीमा मैपिंग के साथ संघर्ष कर रहा हूं, और बहुत अजीबता के बीच, मैं इस समस्या पर फंस गया हूं।क्या जेपीए
मैं दो तालिकाओं, इस के समान है:
Table 1 Table 2
|Service | |Servicetype |
|servicetype | |Servicecategory |
| | | |
कहाँ तालिका 1 में servicetype
तालिका में दो में सेवा प्रकार के लिए एक विदेशी कुंजी है। हालांकि, तालिका 1 में सेवाओं के आधार पर विभिन्न प्रकार के व्यवहार हैं, जिनके आधार पर वे हैं (जबकि 100+ servicetypes हैं, केवल 4 श्रेणियां हैं) मैं तालिका 1 को मैप करने में सक्षम होना चाहता हूं चार अलग-अलग इकाई वर्ग, उनके सेवा प्रकार की श्रेणी के आधार पर। एक अलग discriminatorvalue
, जो काम नहीं करता है के साथ, इस से विस्तार buth
@Entity
@Table(name = "table1")
@DiscriminatorColumn(name = "servicecategory", discriminatorType =
discriminatorType.INTEGER)
@DiscriminatorValue("1")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@SecondaryTable(name = "table2",
pkJoinColumns =
@PrimaryKeyJoinColumn(name = "servicetype", referencedColumnName =
"servicetype"))
public class AbstractService implements Serializable {
...etc
और 4 वर्गों, eclipselink के बाद से, जो मैं उपयोग कर रहा हूँ, देखने के लिए कोशिश करता है:
यह वही है मैं अब तक किया है table1 में servicecategory का मूल्य।
क्या जेपीए के साथ ऐसा मैपिंग व्यक्त करना संभव है या क्या मुझे प्रत्येक क्वेरी पर "where servicecategory = ?
" के साथ मैपिंग करना चाहिए।
क्या आपने परिभाषा में तालिका और कॉलम नाम निर्दिष्ट करने का प्रयास किया है? "table2.servicecategory" – Chris
भेदभावकर्ता टिप्पणी एनोटेशन में? हाँ। लेकिन जेनरेट की गई क्वेरी पहले से ही उपनाम द्वारा तालिका निर्दिष्ट करती है, इसलिए यह आपके जवाब के लिए $ tablealias.table2.servicecategory – vruum