In my query I'm using a hardcoded string but if I change the qualifier in the cayenne modeler to, for example, use a different column or change the string in the qualifier it won't match the query.
So, I should use the actual qualifier from the modeler but I don't see the qualifier in the class variables. Does it only live in the modeler? Basically I just don't want to use a string that I have in my code. I could use something like just the class name of the class but that may not match the qualifier. Rob Sent from my iPhone > On Apr 7, 2026, at 14:04, Andrus Adamchik <[email protected]> wrote: > > Hi Rob, > > In your example, both the entity qualifier and the condition in "where" seem > the same. So you wouldn't need the latter if you have the former. Am I > misreading the description? > > Andrus > >> On Apr 7, 2026, at 7:48 AM, Robert A. Decker <[email protected]> wrote: >> >> I'm using single-table inheritance with the 'type' column determining the >> subclass with a Qualifier in the model: >> AiSystemPrompt (abstract) >> AiSystemPromptSummarization (Qualifier type='AiSystemPromptSummarization') >> >> This query works: >> >> List<AiJob> jobs = ObjectSelect.query(AiJob.class) >> .where(AiJob.AI_SYSTEM_PROMPT.dot(AiSystemPrompt.TYPE).eq("AiSystemPromptSummarization")) >> .select(context); >> >> But I don't like that I'm hardcoding the subclass >> ("AiSystemPromptSummarization") and searching against the TYPE property. >> >> Is there a way to do this using the attributes I have in the cayenne model? >> (abstract superclass with concrete subclass using the qualifier set in the >> entity model) >> >> I looked at BaseProperty and a couple of others in >> org.apache.cayenne.exp.property but don't see it.... >> >> Rob >
