#1174 - ENH: Support mapping @TenantId to an entity bean via @ManyToOne

This commit is contained in:
Rob Bygrave
2018-02-21 09:44:37 +13:00
parent 0b1c3a4233
commit eaa48468cd
9 changed files with 67 additions and 10 deletions
@@ -1204,7 +1204,7 @@ public class BeanDescriptor<T> implements BeanType<T> {
if (tenant != null && !query.isNativeSql()) {
Object tenantId = ebeanServer.currentTenantId();
if (tenantId != null) {
query.where().eq(tenant.getName(), tenantId);
tenant.addTenant(query, tenantId);
}
}
if (isDocStoreOnly()) {
@@ -1872,6 +1872,29 @@ public class BeanDescriptor<T> implements BeanType<T> {
}
}
/**
* Create a non read only reference bean without checking cacheSharableBeans.
*/
@SuppressWarnings("unchecked")
public T createReference(Object id, PersistenceContext pc) {
try {
EntityBean eb = createEntityBean();
id = convertSetId(id, eb);
EntityBeanIntercept ebi = eb._ebean_getIntercept();
ebi.setBeanLoader(ebeanServer);
ebi.setReference(idPropertyIndex);
if (pc != null) {
contextPut(pc, id, eb);
ebi.setPersistenceContext(pc);
}
return (T) eb;
} catch (Exception ex) {
throw new PersistenceException(ex);
}
}
/**
* Return the bean property traversing the object graph and taking into
* account inheritance.
@@ -2725,7 +2748,7 @@ public class BeanDescriptor<T> implements BeanType<T> {
*/
public void setTenantId(EntityBean entityBean, Object tenantId) {
if (tenant != null) {
tenant.setValue(entityBean, tenantId);
tenant.setTenantValue(entityBean, tenantId);
}
}