Я использую весенний ботинок для отдыха задней системы с данными весны, У меня есть три основных слоя (контроллер, сервис, дао).Весенняя загрузка и граница транзакции
Я аннотировал класс обслуживания с помощью @Transactional и в рамках одного из его методов я получаю некоторый объект, имеющий отношения @ManyToMany с другим Entity.
Я хочу только получить основную сущность, и я зависим от ленивого @ManyToMany.
Проблема заключается в возврате из службы в контроллер, когда я нажимаю на (многие) стороны, SQL-запрос является проблемой и извлекает коллекцию, как если бы транзакция все еще работает !!
@SpringBootApplication
@ComponentScan(value = { "net.pd.ethraa" })
@EnableJpaRepositories(basePackages = { "net.pd.ethraa.dao" })
@EntityScan(basePackages = "net.pd.ethraa.common.model")
@EnableTransactionManagement
public class EthraaApplication extends SpringBootServletInitializer {
}
@RequestMapping(path = "/get/{id}", method = RequestMethod.GET)
public Account getAccount(@PathVariable("id") Long id) {
Account account = accountService.find(id);
for (Permission p : account.getPermissions()) {
System.out.println(p.getName());
}
return account;
}
@Service
@Transactional
public class AccountServiceImpl implements AccountService {
@Override
public Account find(Long id) {
return accountDao.findOne(id);
}
}
@Repository
public interface AccountDao extends CrudRepository<Account, Long> {}
@Entity
@Table(name = "ACCOUNT", uniqueConstraints = @UniqueConstraint(columnNames = { "mobile", "email" }))
public class Account extends BaseEntity {
@ManyToMany
@JoinTable(name = "ACCOUNT_PERMISSION")
private List<Permission> permissions;
}
Я ожидаю, когда я попал в коллекцию вне службы она должна быть за пределами транзакции и дает ленивое исключение, но это не делает?
Это верно для всех сценариев? Включает ли Spring загрузку через какое-либо свойство приложения/аннотацию/класс? Пожалуйста, направляйте. Я попробовал пример в последних версиях весенней загрузки> 1.4.2. У меня есть ленивое исключение загрузки. – Barath
В текущей версии Spring Boot этот параметр должен по умолчанию «true». Полные условия регистрации этого перехватчика можно увидеть в [исходном коде] (https://github.com/spring-projects/spring-boot/blob/v1.4.3.RELEASE/spring-boot-autoconfigure/src/main /java/org/springframework/boot/autoconfigure/orm/jpa/JpaBaseConfiguration.java#L185). Если у вас возникли проблемы, попробуйте запустить отдельный вопрос с вашим примером, пожалуйста. –