最近在研究EJB3遇到org.hibernate.AnnotationException: Use of @OneToMany or
@ManyToMany targeting an unmapped class:
com.ni.ejb.Project.users[com.ni.ejb.User]
这个问题,搞了我3个小时,在网上也查了资料,找了些出现这样的错误的原因,不过我都 加了 @Entity, 找来找去找不出原因。
@Entity
@Table(name="Project")
public class Project implements java.io.Serializable {
//略。。
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OrderBy(value = "id ASC")
private Set<User> users = new HashSet<User>();
}
。。。
@Entity
@Table(name = "User")
public class User implements java.io.Serializable {
//略。。
@ManyToOne(cascade = CascadeType.REFRESH, optional = false)
@JoinColumn(name = "pid")
private Project project;
}
没辙了,只好用排除法,删一段代码看看,找别人的一对多的范例来试试,这倒是成功的,后来无意中重起了JBoss,而不是redeploy,结果一
切正常,后来自己想想可能是persistence.xml上hibernate.hbm2ddl.auto 为
update,所以每当服务器重起的时候读入persistence.xml然后映射数据库,而redeploy是不会读入的。
分享到:
相关推荐
在处理一对多(One-to-Many)关系时,`mappedBy`属性扮演了关键角色。这篇博客文章,虽然描述为空,但链接指向了一个可能深入讨论`mappedBy`特性的资源。 `mappedBy`属性是Hibernate中用于定义关联关系的一个关键...
在父实体(拥有一端)上,我们需要使用`@OneToMany`注解,该注解包含两个重要的属性:`mappedBy`和`cascade`。`mappedBy`指定了子实体中用于维护关联的字段或属性,而`cascade`则控制对子实体的操作是否应该级联到父...
本篇文章将详细探讨在Hibernate中如何使用注解来处理各种关联关系,特别是`mappedBy`属性的用法。 首先,`@OneToMany`注解用于表示一对多的关联关系,比如一个班级可以有多个学生。在单向关联中,我们通常在拥有...
通常通过`@OneToOne`注解来实现,可以设置`mappedBy`属性来指定对方实体中的关联字段。 2. **双向一对一**: 双向一对一关系意味着两个实体都包含对彼此的引用。每个实体都有一个指向对方的属性,并使用`@OneToOne...
双向一对一关系需要在两个实体类中都使用`@OneToOne`,一方使用`mappedBy`属性引用另一方的属性。例如: ```java // 在User类中 @OneToOne(mappedBy="user") private Profile profile; // 在Profile类中 @...
`_nscd_get_map_ref (xtne_type type, const char *machalue, mapped map_ptr, int *gc_cyclep)` 这段代码存在竞态条件,可能会导致线程不安全的问题。 解决方案: 为了解决这个问题,可以使用预防的方法,例如...
mappedBy属性表示Profile实体是关系的拥有者,而JoinColumn注解用于指定外键列名。 三、一对多(OneToMany)关系映射 一对多关系意味着一个实体可以与多个其他实体相关联。例如,一个用户可以有多个订单: ```...
这里的`mappedBy`属性用于指定外键位于哪个实体,而`@JoinColumn`则用于指定外键所在的表和列名。 2. 一对多关系映射(One-to-Many) 在一对多关系中,一个实体可以对应多个其他实体的实例。例如,一个班级(Class...
配置`@OneToMany`时,需要指定`targetEntity`属性,指明子类的全限定名,同时可以设置`mappedBy`属性,指出子类中的反向引用字段。如果`mappedBy`未指定,则需要在父类中添加`@JoinColumn`注解来定义外键字段。 三...
2. 在"多"端,需要定义一个引用"一"端的字段,并添加`@ManyToOne`注解,同时`mappedBy`属性应与"一"端的`@OneToMany`注解中的`mappedBy`值相同。 ```java @Entity public class Course { @ManyToOne @JoinColumn...
配置方式通常通过`@OneToOne`注解实现,可以设置`mappedBy`属性来指定在另一个实体中的反向关联字段。 ```java @Entity public class User { @OneToOne(mappedBy = "user") private Profile profile; } @Entity ...
`mappedBy`属性用于指定关系的维护方,没有`mappedBy`的一方负责在保存时同步关联关系。 ### 5. "bionetoonetable"实践 资源"bionetoonetable"可能是某个实际的项目或教程,它可能包含了一个关于生物信息学领域的...
- 可以通过`mappedBy`属性指定被引用方,否则需在双方实体上定义关系。 - `@JoinColumn`注解用于指定外键列名和主键关联。 例如: ```java @Entity public class User { @Id private Long id; @OneToOne(mapped...
- **多对一(Many-to-One)**:在多方类中使用`@ManyToOne`,并在一方类中使用`@OneToMany(mappedBy="")`,其中mappedBy的值是多方类中对应的属性名。 - **多对多(Many-to-Many)**:这种关系比较复杂,通常需要...
在其中一个实体类中,`@OneToOne`注解通常会与`mappedBy`属性一起使用,指定另一方实体的属性作为关联的导航字段。在另一个实体类中,直接在对应的属性上使用`@OneToOne`注解即可。 例如,我们有`Student`和`...
10. **@ManyToMany(cascade=..., mappedBy="...")**:处理多对多关系,`cascade`定义级联行为,`mappedBy`则指定在关联实体中维护关系的字段。 11. **@OneToOne(cascade=..., mappedBy="...")**:用于一对一的关系...
对于一对多的双向映射,如果要一对多这一端维护关联关系,你需要删除mappedBy元素并将多对一这端的@JoinColoumn的insertable和updatabel设置为false。这种方案不会得到什么明显的优化,而且还会增加一些附加的UPDATE...
@OneToOne(mappedBy = "user") private Profile profile; } @Entity public class Profile { @Id private Long id; @OneToOne @PrimaryKeyJoinColumn private User user; } ``` 2. **一对多关联关系*...