- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Java 和 Hibernate 的新手(虽然我熟悉 Entity Framework ,所以了解很多概念)
我想做的就是创建一个表 OrganisationNode
,它具有以下字段:Id
、Name
和 ParentId
ParentId
为 Nullable,如果存在,应指向有效的 OranisationNode.Id
。
我原以为这应该相当简单,但在谷歌搜索和编辑 XML 文件上花了 2 天多的时间,我开始失去耐心了。
让我从代码片段开始......
@javax.persistence.Entity
public class OrganisationNode extends EntityBase implements Serializable {
private String name;
@ManyToOne(targetEntity = OrganisationNode.class, optional = true)
@JoinColumn(name="ParentId", referencedColumnName="Id") //This is one example of this attribute. I've tried many combinations
private OrganisationNode parent;
@OneToMany
private Set<OrganisationNode> children = new HashSet<OrganisationNode>();
//Getters/Setters
}
@javax.persistence.Entity
public class EntityBase implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
//Getter/Setter
}
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://mysqldev:3306/SomeDb?zeroDateTimeBehavior=convertToNull</property>
<property name="hibernate.connection.username">SomeUser</property>
<property name="hibernate.connection.password">SomePass!</property>
<property name="hibernate.hbm2ddl.auto">create</property>
<property name="show_sql">true</property>
<mapping resource="hibernate.hbm.xml"/>
</session-factory>
</hibernate-configuration>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.overshare.document.entities.OrganisationNode" table="OrganisationNodes">
<id name="id"><generator class="native"/></id>
<property name="name"/>
<property name="children"/>
<property name="parent"/>
</class>
</hibernate-mapping>
public class HibernateUtil {
private static SessionFactory sessionFactory;
public static void configureSessionFactory() {
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder().applySettings(configuration.getProperties());
sessionFactory = configuration.buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
}
public static SessionFactory getSessionFactory() {
if(sessionFactory == null){configureSessionFactory();}
return sessionFactory;
}
}
我目前得到的异常是...
javax.servlet.ServletException: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: OrganisationNodes, for columns: [org.hibernate.mapping.Column(Children)]
那么,我的第一个问题是如何解决这个异常?我相信我已经明确告诉它 Children
应该指向什么。
我的下一个问题是……这一切真的有必要吗?我很难相信在 ORM 上启动并运行单个表需要如此多的配置和代码。我在这里得到的大部分内容都是从网络上的各种示例中破解而来的,所以我不确定质量。这些信息中的 90% 肯定可以通过反射进入 hibernate 状态吗?
最佳答案
您在这里混合了 xml 映射和注释。在您的情况下,仅注释就足够了。首先删除 Hibernate.hbm.xml。
组织节点.java
@Entity
public class OrganisationNode extends EntityBase {
private String name;
private String description;
@ManyToOne
@JoinColumn(name="ParentId")
private OrganisationNode parent;
@OneToMany
private Set<OrganisationNode> children = new HashSet<OrganisationNode>();
}
实体库.java
@Entity
public class EntityBase {
@Id
@GeneratedValue
private Long id;
}
hibernate .config.xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://mysqldev:3306/SomeDb?zeroDateTimeBehavior=convertToNull</property>
<property name="hibernate.connection.username">SomeUser</property>
<property name="hibernate.connection.password">SomePass!</property>
<property name="hibernate.hbm2ddl.auto">create</property>
<property name="show_sql">true</property>
<mapping class="com.overshare.document.entities.OrganisationNode"/>
</session-factory>
</hibernate-configuration>
关于java - hibernate MappingException : Could not determine type for: java. util.Set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071116/
我有 Symfony 项目,其中有 2 个实体 - Building 和 Building_type。它们与 ManyToMany 单向关联相连。因此,当我尝试访问我的 Controller 时,我遇
在 couchBase 中保存 Map 类型数据时出现异常 Caused by: org.springframework.data.mapping.MappingException: Couldn't
我在使用无状态 session 进行更新时遇到问题,我 想知道是否有人见过这样的东西。 (NHibernate 3.1)。 我基本上是在做以下事情: SomeEntity e = statelessS
在使用hibernate时,我遇到了在两个不同的包中映射类的问题。 我有一个 myapp.domain.ItemforSale 类,它将映射到 myapp.cart.CartItem 我创建了 Car
最近,我将项目从 Hibernate 版本 3.1 迁移到 4.3,为了获得更好的性能,我尝试使用注释而不是 xml 映射。在继承类的所有实体类中,出现以下异常。错误是“org.hibernate.M
我正在努力解决以下问题: Caused by: org.hibernate.MappingException: Foreign key (FKj4uw5b6ekvxc2djohvon7lk7:bi_p
我尝试让 hibernate 4 运行(JBoss AS 7 附带)并将我的应用程序部署为 EAR(persistence.xml iis 在 EAR 的 META-INF 中)。 hibernate
我正在使用 JBoss AS 7 和 IDEA 11。当我尝试部署我的应用程序时遇到了这个问题: 我的应用中有两个实体: 首先: @Entity @Table(name="users") public
我在尝试使用 Hibernate 时遇到映射异常 - 在独立的 java 应用程序中(使用 netbeans 8)。我已经配置了 hibernate.cfg.xml 并设置了 hbm.xml 文件并映
我有一个数据库、hbm 映射文件和位于类库 中的 App.config。现在从一个测试项目中我引用该库并尝试调用我创建的 HibernateHelper 类,在运行时抛出以下错误: NHibernat
我有这个异常(exception): org.hibernate.MappingException: persistent class not known: java.lang.Long 我正在使用
情景 我需要在两个不同的上下文中表示一个对象。一个上下文不应该持续存在,另一个应该。持久对象是从另一个系统中提取的实际数据。非持久对象代表产品定义的一部分。两者将进行比较,我对存储定义数据不感兴趣。持
我有一个带有复合 ID 的表,其中一个字段是另一个表的外键。 我尝试使用以下类来实现这一点 - Tracking.java: public class Tracking { @Id @
我正在使用 Hibernate 注释并且有一个非常基本的数据对象: import java.io.Serializable; import javax.persistence.Entity; impo
我很好奇这个错误 org.hibernate.MappingException:未知实体:xyz 我是 hibernate 新手。欢迎提出任何建议。提前致谢。 最佳答案 Hibernate 将您的数据
我做错了什么? Exceprion 说我需要使“id”字段不可插入且不可更新。但我已经有了这些注释。我什至删除了“id”的setter方法,但它没有任何效果。是不是少了什么? weblogic.app
我正在为这两个类使用 JPA 注释: @Entity @RooJavaBean @RooToString @RooEntity @MappedSuperclass public abstract cl
使用 Castor 1.3,在测试时收到以下异常: org.exolab.castor.mapping.MappingException: The Java class com.company.sal
我收到以下错误: Could not determine type for: java.util.Set, at table: Ruleset, for columns: [org.hibernate
我在一个项目的代码中。当我尝试将对象 RRREC 类型转换为 RR_REC 类型时出现错误。 RRREC 类: public class RRREC{ protected String ow
我是一名优秀的程序员,十分优秀!