Skip to content

Instantly share code, notes, and snippets.

@andersonfreitas
Created April 7, 2011 15:31
Show Gist options
  • Save andersonfreitas/908007 to your computer and use it in GitHub Desktop.
Save andersonfreitas/908007 to your computer and use it in GitHub Desktop.
@Entity
@FilterDef( name="tenantFilter", parameters=@ParamDef( name="tenantId", type="string" ) )
@Filters(
@Filter( name="tenantFilter", condition="tenant_id = :tenantId" )
)
@Filter( name="tenantFilter", condition="tenant_id = :tenantId" )
)
public class Customer {
@Id
private Long id;
@Column( name="tenant_id", nullable=false, updateable=false )
private String tenantId;
}
public void demonstrateUsageInDiscriminatorScenario() {
// One thing that must be done on all sessions is to enable the tenant­based Hibernate filter
// we defined before on the entity. This is usually best handled by some form of "request
// interceptor" (HttpServletRequestFilter, etc) to make sure it is done uniformly
// Creating an entity
Session session = openSession();
session.enableFilter( "tenantFilter" ).setParameter( "tenantId", "some­tenant­identifier" );
session.beginTransaction();
Customer customer = new Customer();
...
customer.setTenantId( "some­tenant­identifier" );
session.persist( customer );
session.getTransaction().commit();
session.close();
// Querying Customers
session = openSession();
session.enableFilter( "tenantFilter" ).setParameter( "tenantId", "some­tenant­identifier" );
session.beginTransaction();
Customer customer = (Customer) session.createQuery( "from Customer" ).uniqueResult();
session.getTransaction().commit();
session.close();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment