Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何指定hibernate实体关联';使用基于java的配置时的映射类?(如@OneToOne等)_Java_Hibernate_Hibernate Mapping_Hibernate 5.x - Fatal编程技术网

如何指定hibernate实体关联';使用基于java的配置时的映射类?(如@OneToOne等)

如何指定hibernate实体关联';使用基于java的配置时的映射类?(如@OneToOne等),java,hibernate,hibernate-mapping,hibernate-5.x,Java,Hibernate,Hibernate Mapping,Hibernate 5.x,我试图完全退出基于xml的映射,并使用基于java的配置编写相同的映射。在我有使用实体映射的要求之前,它一直工作得很好。有人能帮助我通过基于java的配置指定hibernate映射吗 下面是一个HibernateXML配置示例 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configu

我试图完全退出基于xml的映射,并使用基于java的配置编写相同的映射。在我有使用实体映射的要求之前,它一直工作得很好。有人能帮助我通过基于java的配置指定hibernate映射吗

下面是一个HibernateXML配置示例

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/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.username">myuser</property>
    <property name="hibernate.connection.password">mypassword</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/websystique</property>
    <property name="show_sql">true</property>
    <property name="format_sql">false</property>
    <mapping class="com.myapps.testapps.model.Student"/>
    <mapping class="com.myapps.testapps.model.University"/>
</session-factory>
</hibernate-configuration>
}

我还使用了JPA注释,如下所示

@Entity
@Table(name = "UNIVERSITY")
public class University {

@Id
@GeneratedValue
@Column(name = "UNIVERSITY_ID")
private long id;

@Column(name = "NAME")
private String name;

@Column(name = "COUNTRY")
private String country;

------------------------

以及相关的getter和setter方法

在一篇文章中,我读到另一种方法是指定映射类并允许Hibernate查找映射文档:

Configuration cfg = new Configuration()
.addClass(org.hibernate.auction.Item.class)
.addClass(org.hibernate.auction.Bid.class);
但是我真的不知道如何将它添加到我的HibernateConfig.java文件中。如果我没有错,我假设这必须使用sessionFactory来完成。谁能帮我一下吗


由于在回答中提到setPackagesToScan()是的等价物,因此,当我将实体关联与现有代码(已具有
setPackagesToScan()
@Entity
注释)一起使用时,出现以下错误

调用init方法失败;嵌套异常是org.hibernate.AnnotationException:@OneToOne或@ManyToOne在com.myapps.testapps.model.Student.university上引用了一个未知的实体:java.lang.String
XML配置中的
属性相当于
setPackagesToScan()
方法,该方法查找由
@Entity
注释注释的类,然后由其他JPA注释完成映射


我不认为你的例子有什么错。。。或者发布您得到的错误或不起作用的内容。

您需要一种将实体映射到关系模型的方法吗?如果是这种情况,请使用jpa注释。@SahilGupta我已经在使用jpa注释了。我已经编辑了我的问题,向大家展示了您使用spring框架的相同之处?那么,您能否澄清一下,您无法使用java conf进行的hibernate映射是什么。在提出问题时,请务必提及您遇到的错误。。我认为这样做是错误的。这就是为什么我没有发布错误。我现在用错误更新了我的问题。
@Entity
@Table(name = "UNIVERSITY")
public class University {

@Id
@GeneratedValue
@Column(name = "UNIVERSITY_ID")
private long id;

@Column(name = "NAME")
private String name;

@Column(name = "COUNTRY")
private String country;

------------------------
@Entity
@Table(name = "STUDENT")
public class Student {

@Id
@GeneratedValue
@Column(name = "STUDENT_ID")
private long id;

@Column(name = "FIRST_NAME")
private String firstName;

@Column(name = "LAST_NAME")
private String lastName;

@Column(name = "SECTION")
private String section;

@ManyToOne(optional = false)
@JoinColumn(name="UNIVERSITY_ID")
private University university;
----------------------
Configuration cfg = new Configuration()
.addClass(org.hibernate.auction.Item.class)
.addClass(org.hibernate.auction.Bid.class);