Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] EclipseLink Multi-tenancy: No value was provided for the session property [eclipselink.tenant-id]

Hello Guy,

I have a single class in my application that uses the entity manager (it is injected by the container via @PersistenceContext). This class is an abstract DAO class where all my EJB's inherit from in order to access the database. I set the tenant-id property after a transaction is started (i.e. after invoking an EJB method), but before accessing the entity manager. I double checked this by setting a field breakpoint on the EntityManager property and manually checking via the debugger that the property is set. The weird thing is that happens only once, when I execute the same operation again (by reloading the page), I don't get the error.

Any ideas here?

Cheers,
Theo



On Wed, Aug 10, 2011 at 1:15 PM, Guy Pelletier <guy.pelletier@xxxxxxxxxx> wrote:
Hi Theo,

Are you setting your tenant properties after a begin transaction call? You're tenant properties should be set on the EM only after a begin transaction call and before any operations are performed on that EM.

Cheers,
Guy

On 10/08/2011 4:22 AM, Theodor Richard wrote:
Hi,

I'm developing a multi-tenant Java EE 6 application (where tenants share a single table) with container managed @PersistenceContext injection. I keep getting the following exception:

Exception [EclipseLink-6174] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.QueryException
Exception Description: No value was provided for the session property [eclipselink.tenant-id]. This exception is possible when using additional criteria or tenant discriminator columns without specifying the associated contextual property. These properties must be set through Entity Manager, Entity Manager Factory or persistence unit properties. If using native EclipseLink, these properties should be set directly on the session.

I set the multi tenant property for every transaction as follows:

em.setProperty(PersistenceUnitProperties.MULTITENANT_PROPERTY_DEFAULT, checkNotNull("tenant-id"))

where em is the EntityManager. I get the above exception, although I set the property. I also debugged the code to make sure that the property is set (through em.getProperties()), and I was able to see that it's set. When I reload the page (i.e. start another transaction), it works.

How can I prevent this exception?

Thanks,
Theo



Back to the top