我正在使用spring boot,我想在这里缓存一些数据是我的实体和存储库类
地点实体类:
@Entity
@Table(name = "PLACE_MASTER")
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Component
public class PlaceMaster extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PLACE_MASTER_ID")
@JsonView(View.Place.class)
private long placeMasterId;
@Column(name = "PLACE_NAME")
@JsonView(View.Place.class)
private String placeName;
@Column(name = "ALT_PLACE_NAME")
private String alternatePlaceName;
@Column(name = "PINCODE")
private String pinCode;
@Column(name="DISTRICT_NAME")
private String districtName;
@ManyToOne (cascade = CascadeType.ALL)
@JoinColumn(name = "STATE_MASTER_ID")
private StateMaster stateMaster;
}
州实体类:
@Entity
@Table(name = "STATE_MASTER")
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
//@ToString
public class StateMaster extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "STATE_MASTER_ID")
private long stateMasterId;
@Column(name = "STATE_NAME")
private String stateName;
@Column(name = "STATE_CODE")
private String stateCode;
@OneToMany(mappedBy = "stateMaster", cascade = CascadeType.ALL)
private List<PlaceMaster> placeMaster = new ArrayList<PlaceMaster>();
}
public interface PlaceMasterRepository extends JpaRepository<PlaceMaster, Long> {
@Override
@Cacheable("places")
public List<PlaceMaster> findAll();
}
bootstrap应用程序类:
@SpringBootApplication
@EnableCaching
@EnableAsync
@EnableTransactionManagement
public class myApplication {
@Autowired
private PlaceMasterRepository placeMasterRepository;
public static void main(String[] args) throws Throwable {
SpringApplication.run(GoyaanaApplication.class, args);
}
}
当我运行spring boot应用程序时,我收到以下错误。是否由于双向依赖性。请帮忙
引起:org.springframework.beans.factory.BeanCurrentlyInCreationException:创建名为'entityManagerFactory'的bean时出错:请求的bean当前正在创建:是否存在无法解析的循环引用? 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:347) 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
答案 0 :(得分:0)
通常最好避免bean之间的循环依赖关系,例如:移动@EnableCaching
,@EnableAsync
,@EnableTransactionManagement
分隔@Configuration类。
如果无法实现,可以通过在@Autowired bean上添加@Lazy注释来解决这个问题。这将创建一个将在运行时解析的惰性代理。这有一个警告 - 如果连接正确,您无法确定应用程序的开始。
@Lazy
@Autowired
private PlaceMasterRepository placeMasterRepository;
有关详细信息,请参阅Spring documentation。