Я пытаюсь узнать, как я могу получить доступ к двум базам данных.Для этого я разработал проект, используя hibernate, и создал два таких соединения:
Соединение содержит только данные фиктивного студента, другое содержит идентификационную фотографию.Я представляю базу данных файлов, которая содержит PDF-файлы, изображения ...
Изображение имеет составной первичный ключ, поскольку оно разделено на строки байтов.
Я могу подключиться индивидуально на каждой базе,но я не могу, когда пытаюсь использовать их одновременно.
Photo.class
@IdClass(PhotoId.class)
public class Photo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_arquivo")
private int idArquivo;
@Id
@Column(name = "item", nullable = false)
private long item;
@Column(name = "conteudo", nullable = false)
private byte[] conteudo;
@Column(name = "size", nullable = false)
private long size;
...
}
class PhotoId implements Serializable {
private static final long serialVersionUID = 1L;
private int idArquivo;
private long item;
...
}
Person.class
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_pessoa")
private int idPessoa;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_arquivo_foto", referencedColumnName = "id_arquivo")
private Photo photo;
}
Это прекрасно работает, когда япозвони в ДАО.У меня есть два "hibernate.cfg" и два утилиты hibernate для подключения.
PersonDAO.class
public class PersonDAO{
private static PersonDAO personDAOInstance;
public static PersonDAO getInstance(){
if(personDAOInstance == null) {
personDAOInstance = new PersonDAO();
}
return(personDAOInstance);
}
public Person getPersonById(int id){
Session session = HibernateUtil.getSessionFactory().openSession();
Person person = null;
try {
Query consulta = session.getNamedQuery("Person.buscarPorId");
consulta.setInteger("id", id);
person = (Person) consulta.uniqueResult();
} catch(RuntimeException ex) {
throw ex;
} finally {
session.close();
}
return(person);
}
}
У меня есть еще один DAO только для фотографии, PhotoDAO.class такой же, как PersonDAO.class с необходимыми изменениями отображения.Я вызываю объект, и он всегда выдает ошибку, но когда я комментирую поле фотографии в Person.class работает, когда я вызываю Photo.class, оно работает, но никогда Person.class с фотографией.
Я называю это такспособ:
Person person = personDAO.getPersonById(2);
Я не знаю, должен ли я делать
личное фото списка
, или это другая проблема с режимом подключения, поскольку Photo.class отображается с помощью hibernate_base_arquivos.cfg.xml и Person.class с помощью hibernate.cfg.xml