- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以在另一个 Embeddable 中包含一个 Embeddable 的 ElementCollection ?
这是我的供应商实体的示例,其中包含可嵌入类型的地址列表:
@Entity
public class Supplier extends BaseCommonEntity {
@Column(unique=true)
private String supplierCode;
private String supplierName;
@ElementCollection
private List<Address> addresses;
....
<小时/>
这是我的可嵌入地址,其中包含可嵌入电话列表
@Embeddable
public class Address {
private String address;
private String city;
private String country;
private String postcode;
@ElementCollection
private List<Phone> phones;
public List<Phone> getPhones() {
return phones;
}
public void setPhones(List<Phone> phones) {
this.phones = phones;
}
...
<小时/>
这是可嵌入手机的定义
@Embeddable
public class Phone {
private Long phoneCountryCode;
private Long phoneCityCode;
private Long phoneNo;
private Long faxCountryCode;
private Long faxCityCode;
private Long faxNo;
...
<小时/>
我目前正在使用 JPA 2 + Hibernate 3.6.x 进行测试
在我的测试中,在地址中使用嵌入式电话会导致错误。这是来自最底部的部分调试消息:
DEBUG PropertyBinder - Building property country
DEBUG Ejb3Column - Binding column: Ejb3JoinColumn{logicalColumnName='null', referencedColumn='null', mappedBy=''}
DEBUG Ejb3Column - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(Supplier_addresses), mappingColumn=phones, insertable=true, updatable=true, unique=false}
DEBUG Ejb3Column - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(Supplier_addresses), mappingColumn=null, insertable=true, updatable=true, unique=false}
DEBUG Ejb3Column - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(Supplier_addresses), mappingColumn=phones, insertable=true, updatable=true, unique=false}
DEBUG Ejb3Column - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(Supplier_addresses), mappingColumn=phones_KEY, insertable=true, updatable=true, unique=false}
DEBUG Ejb3Column - Binding column: Ejb3JoinColumn{logicalColumnName='phones_KEY', referencedColumn='null', mappedBy='null'}
DEBUG Ejb3Column - Binding column: Ejb3JoinColumn{logicalColumnName='null', referencedColumn='null', mappedBy=''}
DEBUG Ejb3Column - Binding column: Ejb3JoinColumn{logicalColumnName='null', referencedColumn='null', mappedBy=''}
DEBUG CollectionBinder - Collection role: com.primetech.core.entity.Supplier.addresses.collection&&element.phones
DEBUG PropertyBinder - Building property phones
DEBUG Ejb3Column - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(Supplier_addresses), mappingColumn=postcode, insertable=true, updatable=true, unique=false}
DEBUG PropertyBinder - binding property postcode with lazy=false
DEBUG SimpleValueBinder - building SimpleValue for postcode
DEBUG SimpleValueBinder - Setting SimpleValue typeName for postcode
DEBUG PropertyBinder - Building property postcode
DEBUG CollectionSecondPass - Mapped collection key: Supplier_id, element: address, city, country, postcode
DEBUG DefaultListableBeanFactory - Retrieved dependent beans for bean 'org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter#102799c': [entityManagerFactory]
INFO DefaultListableBeanFactory - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@f6ac0b: defining beans [dataSource,entityManagerFactory,testEntities,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor]; root of factory hierarchy
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [test.xml]: Invocation of init method failed; nested exception is java.util.ConcurrentModificationException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:557)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
at com.primetech.module.purchase.app.TestEntities.main(TestEntities.java:27)
Caused by: java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.remove(AbstractList.java:357)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1687)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1393)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1345)
at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1477)
at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1096)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:685)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
... 12 more
删除这部分可以解决问题
/**** REMOVE ALL OF THIS FROM THE CODE TO SOLVE THE PROBLEM ****/
@ElementCollection
private List<Phone> phones;
public List<Phone> getPhones() {
return phones;
}
public void setPhones(List<Phone> phones) {
this.phones = phones;
}
<小时/>
请分享您的想法!
谢谢!
最佳答案
JPA 2 规范说不。
JSR-317
2.6 可嵌入类和基本类型的集合
包含在元素集合中的可嵌入类(包括另一个可嵌入类中的可嵌入类)不得包含元素集合,也不得包含与除多对一或一对多之外的实体的关系。一对一关系
关于hibernate - JPA embeddable 是否可以包含 Embeddable 或 Embeddable 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5261659/
我想知道是否可以在另一个 Embeddable 中包含一个 Embeddable 的 ElementCollection ? 这是我的供应商实体的示例,其中包含可嵌入类型的地址列表: @Entity
我们正在将旧的基于 xml 的配置转换为基于注解的配置 情况 有一个类注释为 @Embeddable(ParentPk.java) ,另一个类扩展了这个类,它是 @Embeddable(ChildPk
JPA ElementCollection Embeddable 可以具有 ElementCollection List Embeddable 属性吗? @Entity class Perso
我有实体 Ride 和 @ElementCollection(targetClass = RideLocation.class): @ElementCollection(targetClass = R
在搜索了 JPA 文档和各种帖子后,我对 JPA2.0 是否可以实现以下功能感到困惑。我刚开始使用 JPA,所以如果我做了一些愚蠢的事情,请原谅, 我的领域模型有一个“投资组合”,其中包含零个或多个“
我正在使用 @ElementCollection 作为自定义对象列表 @ElementCollection @CollectionTable(name = "choice", joinColumns
我正在使用 v3 youtube API 根据其 ID 获取视频数据。 这是我当前的搜索: https://www.googleapis.com/youtube/v3/videos?part=snip
两个表如: CREATE TABLE foo ( id INT PRIMARY KEY, x TEXT ); CREATE TABLE bar ( foo_id INT REFERENCE
想象一下下面的类 @Embeddable class A { @ManyToOne public B classB; ... public State someEnum
我收到了一个 Eclipse 错误:@EmbeddedId . 这是实体: @Entity @Table(name = "PERSON") public class Person implements
我按照 sitepoint moviestore tutorial进行操作,除了用户购买电影后未将视频加载到iframe中之外,其他一切工作正常。我在一栏中有一个带有youtube url的csv文件
我有一个简单的关系,其中一个实体有许多特定于它的地址,定义为: @Entity public class Corporation { @Id private Long id;
嵌入式和实体之间是否可能存在双向关系或仅存在单向关系? @Entity public class Employee { @Id private long id; ... @Embedd
我看到许多使用 @Embeddable 建立一对多关系的示例,如下所示: @Entity @Table(name = "profiles") public class Profile { @I
如何获取 Maven 插件内的 Maven 项目的所有配置文件列表? 会是: MavenEmbedder.readModel(new File("path to pom.xml")).getProfi
我尝试在可嵌入中使用 elementCollection,但 JPA2.0 似乎忽略它。 如果我进行调试,我会看到可嵌入的集合已被填充,但它不会被持久化,并且 JPA 不会抛出任何异常。它似乎只是由于
我想创建一个类 Exporter,它有两个电话号码:座机和手机。知道电话号码由国家代码和号码组成,我创建了一个 Embeddable 类: @Embeddable public class Embed
我有一个场景,hibernate 中的 Embeddable 类使用Entity。根据我在SO和其他链接上找到的各种答案,我们可以在Embeddable类中编写@ManyToOne,@OneToMan
我有一个用户类,它有一个类配置文件@Embedded。如何为 Profile 的实例提供对其所有者 User 类的引用? @Entity class User implements Serializa
我有一个 JPA 实体的类层次结构,它们都继承自 BaseEntity 类: @MappedSuperclass @EntityListeners( { ValidatorListener.class
我是一名优秀的程序员,十分优秀!