One cache with many value classes vs. several caches
As in your Person-Organization example, you have cache (table) per bean class: PersonCache for Person and OrganizationCache for Organization. Technically, it is possible to have one shared cache for these two objects, like:
CacheConfiguration<?, ?> sharedCacheCfg = new CacheConfiguration<>(SHARED_CACHE);
// Execute queries for find employees for different organizations.
print("Following people are 'ApacheIgnite' employees: ",
cache.query(new SqlQuery<AffinityKey<UUID>, Person>(Person.class, joinSql).
What are advantages/disadvantages of these two ways of working with SQL queries?
Re: One cache with many value classes vs. several caches
While creating a shared cache is technically possible, it's not recommended usage of Ignite - you should always follow type-per-cache pattern. Ignite supports both cross-cache queries or cross-cache transactions, so there are no limitations with this approach.
Is there any particular reason why you're looking into creating a shared cache?