Re: this works, but is there a better way?
Andrus Adamchik <[email protected]> Tue, 7 Apr 2026 08:41:15 -0400
| Newsgroups | gmane.comp.java.cayenne.user |
|---|---|
| Message-ID | <[email protected]> |
Oh, I got it. There are no special Cayenne shortcuts for this. So you'll = have to use your own conventions = (AiSystemPromptSummarization.class.getSimpleName(), or define possible = constants in a custom enum). Andrus > On Apr 7, 2026, at 8:27=E2=80=AFAM, Robert A. Decker = <[email protected]> wrote: >=20 > 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.=20 >=20 > 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? >=20 > 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.=20 >=20 > Rob >=20 > Sent from my iPhone >=20 >> On Apr 7, 2026, at 14:04, Andrus Adamchik <[email protected]> = wrote: >>=20 >> =EF=BB=BFHi Rob, >>=20 >> 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? >>=20 >> Andrus >>=20 >>> On Apr 7, 2026, at 7:48=E2=80=AFAM, Robert A. Decker = <[email protected]> wrote: >>>=20 >>> I'm using single-table inheritance with the 'type' column = determining the subclass with a Qualifier in the model: >>> AiSystemPrompt (abstract) >>> AiSystemPromptSummarization (Qualifier = type=3D'AiSystemPromptSummarization') >>>=20 >>> This query works: >>>=20 >>> List<AiJob> jobs =3D ObjectSelect.query(AiJob.class) >>> = .where(AiJob.AI_SYSTEM_PROMPT.dot(AiSystemPrompt.TYPE).eq("AiSystemPromptS= ummarization")) >>> .select(context); >>>=20 >>> But I don't like that I'm hardcoding the subclass = ("AiSystemPromptSummarization") and searching against the TYPE property. >>>=20 >>> 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) >>>=20 >>> I looked at BaseProperty and a couple of others in = org.apache.cayenne.exp.property but don't see it.... >>>=20 >>> Rob >>=20