· 6 years ago · Jun 29, 2019, 01:20 PM
1Method threw 'org.hibernate.LazyInitializationException' exception. Cannot evaluate lt.package.to.Setting_$$_jvstfff_0.toString()
2
3CREATE TABLE IF NOT EXISTS `Settings` (
4 `key` varchar(255) COLLATE utf8_lithuanian_ci NOT NULL,
5 `value` varchar(255) COLLATE utf8_lithuanian_ci DEFAULT NULL,
6 PRIMARY KEY (`key`)
7) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci;
8
9@Configuration
10@ComponentScan(basePackages= {"lt.setkus.sandbox.persistence"})
11@EnableTransactionManagement
12@PropertySource({"/WEB-INF/properties/configuration.properties"})
13public class PersistenceConfig {
14
15 @Autowired
16 private Environment environment;
17
18 private Properties getHibernateProperties() {
19 Properties properties = new Properties();
20
21 properties.setProperty("hibernate.hbm2ddl.auto", environment.getProperty("hibernate.hbm2ddl.auto"));
22 properties.setProperty("hibernate.dialect", environment.getProperty("hibernate.dialect"));
23 properties.setProperty("hibernate.globally_quoted_identifiers", "true");
24
25 return properties;
26 }
27
28 @Bean
29 public LocalSessionFactoryBean provideSessionFactoryBean() {
30 LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
31
32 localSessionFactoryBean.setDataSource(getDataSource());
33 localSessionFactoryBean.setPackagesToScan("lt.setkus.sandbox.persistence.domain");
34 localSessionFactoryBean.setHibernateProperties(getHibernateProperties());
35
36 return localSessionFactoryBean;
37 }
38
39 @Bean
40 public DataSource getDataSource() {
41 DriverManagerDataSource dataSource = new DriverManagerDataSource();
42
43 dataSource.setDriverClassName(environment.getProperty("jdbc.driver"));
44 dataSource.setUrl(environment.getProperty("jdbc.url"));
45 dataSource.setUsername(environment.getProperty("jdbc.user"));
46 dataSource.setPassword(environment.getProperty("jdbc.password"));
47
48 return dataSource;
49 }
50
51 @Bean
52 @Autowired
53 public HibernateTransactionManager provideTransactionManager(SessionFactory sessionFactory) {
54 HibernateTransactionManager hibernateTransactioManager = new HibernateTransactionManager();
55 hibernateTransactioManager.setSessionFactory(sessionFactory);
56
57 return hibernateTransactioManager;
58 }
59
60 @Bean
61 public PersistenceExceptionTranslationPostProcessor provideExceptionTranslationPostProcessor() {
62 return new PersistenceExceptionTranslationPostProcessor();
63 }
64
65 @Bean
66 public PostItemRepository postItemRepository() {
67 return new FacebookPostRepository();
68 }
69
70 @Bean
71 public PostPersistenceService postPersistenceService(PostItemRepository postItemRepository) {
72 return new PostPersistenceEventHandler(postItemRepository);
73 }
74
75 @Bean
76 public SettingRepository provideSettingRepository() {
77 return new SettingDatabaseRepository();
78 }
79
80 @Bean
81 public SettingPersistenceService provideSettingPersistenceService(SettingRepository settingRepository) {
82 return new SettingPersistenceEventHandler(settingRepository);
83 }
84}
85
86@Entity
87@Table(name = "settings")
88public class Setting implements Serializable {
89 @Id
90 @Column(name = "key", unique = true)
91 private String key;
92
93 @Column(name = "value")
94 private String value;
95
96 public String getKey() {
97 return key;
98 }
99
100 public void setKey(String key) {
101 this.key = key;
102 }
103
104 public String getValue() {
105 return value;
106 }
107
108 public void setValue(String value) {
109 this.value = value;
110 }
111
112 public SettingDetails toSettingDetails() {
113 SettingDetails settingDetails = new SettingDetails();
114 BeanUtils.copyProperties(this, settingDetails);
115
116 return settingDetails;
117 }
118
119 public static Setting fromSettingDetails(SettingDetails settingDetails) {
120 Setting setting = new Setting();
121 BeanUtils.copyProperties(settingDetails, setting);
122
123 return setting;
124 }
125}
126
127public class SettingDatabaseRepository implements SettingRepository {
128
129 @Autowired
130 private SessionFactory sessionFactory;
131
132 @Override
133 @Transactional
134 public Setting get(final String key) {
135 return (Setting)sessionFactory.getCurrentSession().get(Setting.class, key);
136 }
137}
138
139public Setting get(final String key) {
140 return (Setting) sessionFactory.getCurrentSession().get(Setting.class, key);
141 }