Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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
Java 使用JPA和Hibernate创建表(联接表)_Java_Mysql_Database_Jpa - Fatal编程技术网

Java 使用JPA和Hibernate创建表(联接表)

Java 使用JPA和Hibernate创建表(联接表),java,mysql,database,jpa,Java,Mysql,Database,Jpa,我是JPA世界的新手,在这里我被这个问题困住了 我尝试的是使用 new SchemaExport(config).create(true, true); 它给了我这个错误 Exception in thread "main" org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.hidvd.entities.Customer.orders[

我是JPA世界的新手,在这里我被这个问题困住了

我尝试的是使用

    new SchemaExport(config).create(true, true);
它给了我这个错误

Exception in thread "main" org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.hidvd.entities.Customer.orders[com.hidvd.entities.Order]
我有四个实体叫做 -顾客 -项目 -命令 -医嘱ID

它们都与一对多和多对一的关系有关

这里有一些代码

@Entity
public class Customer {
    @Id
    @Column(name = "cust_id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int custid;
    @Column(length = 50, nullable = false, unique = true)
    private String name;
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "customer")
    private List<Order> orders = new ArrayList<Order>();
}

@Entity(name = "item")
public class Item implements Serializable{
    public Item() {
        super();
    }

    @Id
    @Basic(optional = false)
    @Column(name = "item_id", unique = true, nullable = false)
    private int itemid;
    private String title;
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "item")
    private List<Order> orders = new ArrayList<Order>();



@Entity(name = "order")
@AssociationOverrides({
        @AssociationOverride(name = "customer",
                joinColumns = @JoinColumn(name = "cust_id")),
        @AssociationOverride(name = "item",
                joinColumns = @JoinColumn(name = "item_id")) })
public class Order implements Serializable {

    private OrderId pk = new OrderId();
    private Calendar orderedDate;


@Embeddable
public class OrderId implements Serializable{
    @ManyToOne
    private Customer customer;
    @ManyToOne
    private Item item;
@实体
公共类客户{
@身份证
@列(name=“cust\u id”)
@GeneratedValue(策略=GenerationType.AUTO)
私人帐户;
@列(长度=50,可空=false,唯一=true)
私有字符串名称;
@OneToMany(fetch=FetchType.LAZY,mappedBy=“customer”)
私有列表顺序=新的ArrayList();
}
@实体(名称=“项目”)
公共类项实现可序列化{
公共项目(){
超级();
}
@身份证
@基本(可选=假)
@列(name=“item_id”,unique=true,nullable=false)
私有int-itemid;
私有字符串标题;
@OneToMany(fetch=FetchType.LAZY,mappedBy=“item”)
私有列表顺序=新的ArrayList();
@实体(名称=“订单”)
@联想超越({
@AssociationOverride(name=“customer”,
joinColumns=@JoinColumn(name=“cust_id”),
@AssociationOverride(name=“item”,
joinColumns=@JoinColumn(name=“item_id”))})
公共类顺序实现可序列化{
private OrderId pk=new OrderId();
私人日历订购日期;
@可嵌入
公共类OrderId实现可序列化{
@许多酮
私人客户;
@许多酮
私人物品;
如有任何建议,将不胜感激。提前感谢:)

  • 这是persistence.xml文件

java:/MySQLDS
您应该添加:

<mapping class="Your_class_name_here"/>

像这样:

<mapping class="Customer"/>

在persistence.xml中

还有,你应该看看


希望这有帮助!

下面是一个示例,说明persistence.xml文件的外观:

<persistence-unit name="hidvddb">
     <jta-data-source>java:/MySQLDS</jta-data-source>
          <class>com.hidvd.entities.Customer</class>
          <class>com.hidvd.entities.Item </class>
          <class>com.hidvd.entities.Order </class>
          <class>com.hidvd.entities.Order </class>        

          <properties>
             <property name="showSql" value="true"/>
             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
          </properties>
</persistence-unit>

java:/MySQLDS
com.hidvd.entities.Customer
com.hidvd.entities.Item
com.hidvd.entities.Order
com.hidvd.entities.Order

或者如果您不希望在persistence.xml文件中声明所有实体

 <persistence-unit name="hidvddb">
         <jta-data-source>java:/MySQLDS</jta-data-source>
          <exclude-unlisted-classes>false</exclude-unlisted-classes>         

              <properties>
                 <property name="showSql" value="true"/>
                 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
              </properties>
    </persistence-unit>
</persistence>

java:/MySQLDS
假的

你能在这里发布你的persistence.xml文件吗?看来hibernate没有接收你的文件entities@ufasoli谢谢我上传了它。你忘了在persistence.xml文件中列出你的实体。你还可以将xml标记
false
添加到persistence.xml类中,以指示hibernate拾取带注释的类,即使它们不是t在你的persistence.xml文件中列出谢谢你可能的答案。也许我忽略了JPA,这太难了哈哈。两人都欢呼。但仍然没有运气。谢谢你可能的答案。我可能会继续使用表生成,因为我很忙。再次,谢谢:)看看教程,看看它们是否对你有帮助。你在使用Spring或CDI或任何o吗DI系统?你们是如何引导你们的JPA环境的?@ufasoli我只是按照教程做的。这让我发疯了。哈哈哈
 <persistence-unit name="hidvddb">
         <jta-data-source>java:/MySQLDS</jta-data-source>
          <exclude-unlisted-classes>false</exclude-unlisted-classes>         

              <properties>
                 <property name="showSql" value="true"/>
                 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
              </properties>
    </persistence-unit>
</persistence>