Adding Managed Objects

Overview

You can set up Atoti Limits to manage custom objects with same EntityManager as the out-of-the-box objects. Here’s how to do it:

1. Create the Entity

Define the entity class that will be managed by the EntityManager. This class should be annotated with @Entity and @Table to be recognized as a JPA entity. For example, the entity may look as follows:

package com.activeviam.limits.model.custom.jpa;

@Entity
@Table(name = "my_custom_entity")
public class MyCustomEntity {

  @Id
  @Column(name = "id")
  protected String id;

  @Column(name = "name")
  protected String name;

}

2. Create a JPA Repository

Create the JpaRepository for the entity. This could be as simple as:

public interface MyCustomJpaRepo extends JpaRepository<MyCustomEntity, String> {

}

3. Import the JPA Repository

Create and import a Spring configuration class that imports the JpaRepository for the entity and uses the same EntityManager as the default managed objects, for example:


@EnableJpaRepositories(
    entityManagerFactoryRef = LimitsJpaConfig.LIMITS_ENTITY_MANAGER_FACTORY,
    transactionManagerRef = LimitsJpaConfig.LIMITS_TRANSACTION_MANAGER,
    basePackageClasses = {
        MyCustomJpaRepo.class,
    })
public class MyCustomJpaConfig {

}

4. Scan for the Entity

In order to be managed by the same entity manager as the out-of-the-box objects, the entity package must be added to the list of packages picked up by the limits.data.jpa.repository.packages-to-scan configuration property. The default value for this property is com.activeviam.limits.model.jpa, so in the case of MyCustomEntity above, the new property would be:

limits:
  data:
    jpa:
      repository:
        packages-to-scan: com.activeviam.limits.model.jpa, com.activeviam.limits.model.custom.jpa