Skip to content

[BUG] Enums stopped to be supported as repository method parameters #573

@m4ttek

Description

@m4ttek

Which JNoSQL project the issue refers to?

JNoSQL Databases

Bug description

During migration to version 1.1.4 from 1.1.2 I went into a problem with repository methods which uses enum types. It used to work perfectly in version 1.1.2.

com.arangodb.ArangoDBException: Internal error: Unable to make field private final java.lang.String java.lang.Enum.name accessible: module java.base does not "opens java.lang" to unnamed module @5b8bc155 (through reference chain: com.arangodb.model.AqlQueryOptions["bindVars"]->java.util.HashMap["mailCategory"])
	at com.arangodb.ArangoDBException.of(ArangoDBException.java:137)
	at com.arangodb.ArangoDBException.of(ArangoDBException.java:111)
	at com.arangodb.ArangoDBException.of(ArangoDBException.java:107)
	at com.arangodb.internal.serde.InternalSerdeImpl.serialize(InternalSerdeImpl.java:72)
	at com.arangodb.internal.InternalArangoDatabase.queryRequest(InternalArangoDatabase.java:147)
	at com.arangodb.internal.ArangoDatabaseImpl.query(ArangoDatabaseImpl.java:166)
	at org.eclipse.jnosql.databases.arangodb.communication.DefaultArangoDBDocumentManager.select(DefaultArangoDBDocumentManager.java:128)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:106)
	at org.eclipse.jnosql.mapping.document.configuration.DatabaseManager$AutoCloseable$_$$_WeldClientProxy.select(Unknown Source)
	at org.eclipse.jnosql.mapping.semistructured.AbstractSemiStructuredTemplate.executeQuery(AbstractSemiStructuredTemplate.java:289)
	at org.eclipse.jnosql.mapping.semistructured.AbstractSemiStructuredTemplate.select(AbstractSemiStructuredTemplate.java:246)
	at org.eclipse.jnosql.mapping.semistructured.AbstractSemiStructuredTemplate.singleResult(AbstractSemiStructuredTemplate.java:170)
	at org.eclipse.jnosql.mapping.document.DefaultDocumentTemplate$Proxy$_$$_WeldClientProxy.singleResult(Unknown Source)
	at org.eclipse.jnosql.mapping.semistructured.query.BaseSemiStructuredRepository.lambda$executeFindByQuery$1(BaseSemiStructuredRepository.java:146)
	at org.eclipse.jnosql.mapping.core.repository.DynamicReturn.singleResult(DynamicReturn.java:167)
	at org.eclipse.jnosql.mapping.core.repository.returns.OptionalRepositoryReturn.convert(OptionalRepositoryReturn.java:29)
	at org.eclipse.jnosql.mapping.core.repository.DynamicReturnConverter.convert(DynamicReturnConverter.java:60)
	at org.eclipse.jnosql.mapping.core.repository.DynamicReturn.execute(DynamicReturn.java:104)
	at org.eclipse.jnosql.mapping.semistructured.query.BaseSemiStructuredRepository.executeFindByQuery(BaseSemiStructuredRepository.java:152)
	at org.eclipse.jnosql.mapping.semistructured.query.AbstractSemiStructuredRepositoryProxy.executeFindByQuery(AbstractSemiStructuredRepositoryProxy.java:130)
	at org.eclipse.jnosql.mapping.core.query.AbstractRepositoryProxy.lambda$invoke$1(AbstractRepositoryProxy.java:152)
	at org.eclipse.jnosql.mapping.core.query.AbstractRepositoryProxy.unwrapInvocationTargetException(AbstractRepositoryProxy.java:214)
	at org.eclipse.jnosql.mapping.core.query.AbstractRepositoryProxy.invoke(AbstractRepositoryProxy.java:152)
	at jdk.proxy3/jdk.proxy3.$Proxy203.findByMailCategoryAndIsDefaultTrue(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:106)
	at pl.sages.ssop.workflow.infrastructure.repositories.MailTemplateRepository$_$$_WeldClientProxy.findByMailCategoryAndIsDefaultTrue(Unknown Source)

My repository has a method with enum parameter:

@Repository
public interface MailTemplateRepository extends NoSQLRepository<MailTemplate, String> {

    Optional<MailTemplate> findByMailCategoryAndIsDefaultTrue(@NotNull MailCategory mailCategory);
}

MailCategory is a plain enum type:

public enum MailCategory {
    TIMER,
    TRANSITION_MAIN,
    TRANSITION_ALTERNATIVE,
    TRANSITION_FALLBACK
}

JNoSQL Version

1.1.4

Steps To Reproduce

  1. Create a repository method with enum parameter
  2. Try to execute it

Expected Results

There should be no problem with modules as it is enum type that always has public name method accessible.

Code example, screenshot, or link to a repository

No response

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions