Я пытаюсь извлечь мои данные из базы данных (MySQL). Я использую Spring 4.2.4 и Hibernate 5.0.7 и Java 8 с Netbeans. Пока это отлично работает, но мои взаимосвязанные отношения «один ко многим» не извлекаются вместе с остальными данными. Я получаю эту информацию:Hibernate получение данных один-ко-многим - MySQLSyntaxErrorException
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'biuro.client_polisazycie' doesn't exist
Это волшебно соединяет имя 2 таблиц в одну, что, конечно, не существует ... Ошибка появляется здесь, пока я проверяю данные client.polisy, который бросает это исключение :
@Override
public Client findByIdWithPolisa(int id) {
Client client = this.findById(id); //client does not have "polisy" data
Hibernate.initialize(client);
return client;
}
Вообще-то я пытался инициализировать набор данных внутри объекта из клиента, чтобы избежать выборки нетерпеливый (предпочитают ленивый тип).
Здесь Клиент лицо:
@Entity
@Table(name = "client")
public class Client implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
//...
@Basic(optional = false)
@Column(name = "creationDate")
@Temporal(TemporalType.DATE)
private Date creationDate;
@OneToMany(mappedBy = "", cascade = CascadeType.ALL)
private Set<Polisazycie> polisy;
//...skipping all getters and setters
Позвольте мне сказать, что если я использую mappedBy = "polisazycie" он пытается получить данные в»... (путь) .../Polisazycie. polisazycie ", поэтому он падает для меня тогда.
Вот Polisazycie объект:
@Entity
@Table(name = "polisazycie")
public class Polisazycie implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
//...
@JoinColumn(name = "idClient")
@ManyToOne
private Client client;
А вот мой HibernateConfiguration класс:
@Configuration
@EnableTransactionManagement
@ComponentScan({"com.th.officesuiteservice.services", "com.th.officesuiteservice.dao"})
@PropertySource(value = {"classpath:application.properties"})
public class HibernateConfiguration {
@Autowired
private Environment environment;
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(new String[]{"com.th.officesuiteservice.model"});
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
return dataSource;
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
return properties;
}
@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory s) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(s);
return txManager;
}
}
Итак, подведем итог, в то время как я выборки данных клиента, все они выбираются правильно, только не Set (Polisazycie) и имя таблицы, которое он пытается извлечь, объединены из 2 таблиц. Что я здесь делаю неправильно?
Я знал, что чего-то не хватает ... Большое спасибо за вашу помощь! – Infinito
Добро пожаловать, рад, что помог. –