#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 все выглядит нормально, не знает, в чем проблема. Спасибо за ваш комментарий.