JPA @SecondaryTables, почему моя первичная таблица пуста? В то время как вторичные таблицы не пусты?

#java #orm #jpa #jakarta-ee #jpa-2.0

#java #orm #jpa #джакарта-ee #jpa-2.0

Вопрос:

У меня есть простой POJO, подобный :

 @Entity
@Table(name = "t_address")
@SecondaryTables({
    @SecondaryTable(name="t_city"),
    @SecondaryTable(name="t_country")
})
public class Address{
@Id
@GeneratedValue
private Long id;

private String street1;

private String street2;

@Column(table="t_city")
private String city;

@Column(table="t_city")
private String state;

@Column(table="t_city")
private String zipcode;

@Column(table="t_country")
private String country;

// setter - getter
}
  

И затем в моем Основном классе у меня есть экземпляр, подобный :

 Address address = new Address();
address.setStreet1("boulevard of broken dream");
address.setStreet2("abbey road");
address.setCity("San Fransisco");
address.setState("California");
address.setZipcode("13460");
address.setCountry("USA");

// some variable declaration

tx.begin();
em.persist(address);
tx.commit();
  

После выполнения основного класса у меня есть 3 таблицы внутри базы данных, в которых:

  • t_address [ИДЕНТИФИКАТОР, STREET1, STREET2]
  • t_city [ИДЕНТИФИКАТОР, ГОРОД, ШТАТ, почтовый ИНДЕКС]
  • t_country [ИДЕНТИФИКАТОР, СТРАНА]

После запроса каждой таблицы, почему данные хранятся только в t_city и t_country, а НЕ в t_address? Можете ли вы объяснить причину?

Комментарии:

1. Я видел тот же пример в книге. Может быть, вы могли бы попробовать использовать другую базу данных, чтобы посмотреть, имеет ли это значение.

2. Я только что попробовал ваш пример кода в своей среде, используя три разных поставщика JPA: Hibernate 3.6, EclipseLink 2.1 и OpenJPA 2.1 с MySQL 5.0, и все они были успешными. Единственное отличие, которое я увидел, это то, что OpenJPA заставил меня объявить pkJoinColumns в аннотации таблицы seconday. Вы видите какие-либо исключения в журналах приложений?

3. @edalorzo и @toto да, сначала я пытаюсь использовать Derby, но после переключения на MySQL все выглядит нормально, не знает, в чем проблема. Спасибо за ваш комментарий.