当前位置: 首页 > 工具软件 > Persistence4J > 使用案例 >

java persistence.xml_java – 找不到persistence.xml

苗阳
2023-12-01

我尝试使用jpa与spring-orm和hibernate.

我有带有TRADES表的mysql数据库.我尝试使用jpa使用此表.

我尝试使用persistence.xml测试EntityManager创建,但是我得到一个例外,“没有为EntityManager指定持久性提供程序[persistence-unit-name from persistence.xml]”

正如我在另一个这样的问题中看到的那样,对于我的情况来说,找不到persistence.xml文件.

当我尝试测试这个配置时,我得到一个异常,我认为找不到persistence.xml.

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named trade-mysql-pu

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)

at com.madhusudhan.jsd.jpa.EntityManagerTest.init(EntityManagerTest.java:16)

at com.madhusudhan.jsd.jpa.EntityManagerTest.main(EntityManagerTest.java:29)

我无法弄清楚为什么会这样.你可以帮帮我吗?

谢谢.

表:

create table TRADES (ID int NOT NULL,

ACCOUNT VARCHAR(20) NOT NULL,

SECURITY VARCHAR(10) NOT NULL,

QUANTITY INT NOT NULL,

STATUS VARCHAR(10),

DIRECTION VARCHAR(10)

);

该表的实体类:

package com.madhusudhan.jsd.domain.jpa;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table(name="trades")

public class Trade {

private int id;

private String direction;

private String account;

private String security;

private String status;

private int quantity;

@Column(nullable=false)

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

@Column

public String getDirection() {

return direction;

}

public void setDirection(String direction) {

this.direction = direction;

}

@Column

public String getAccount() {

return account;

}

public void setAccount(String account) {

this.account = account;

}

@Column

public String getSecurity() {

return security;

}

public void setSecurity(String security) {

this.security = security;

}

@Column

public String getStatus() {

return status;

}

public void setStatus(String status) {

this.status = status;

}

@Column

public int getQuantity() {

return quantity;

}

public void setQuantity(int quantity) {

this.quantity = quantity;

}

@Override

public String toString() {

return "Trade [id=" + id + ", direction=" + direction + ", account="

+ account + ", security=" + security + ", status=" + status

+ "]";

}

}

和src / main / resources / META-INF中的persistence.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"

version="2.0">

org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter

com.madhusudhan.jsd.domain.jpa.Trade

这是测试类:

package com.madhusudhan.jsd.jpa;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

import com.madhusudhan.jsd.domain.jpa.Trade;

public class EntityManagerTest {

private EntityManagerFactory factory;

private EntityManager entityManager;

private void init() {

factory = Persistence.createEntityManagerFactory("trade-mysql-pu");

entityManager = factory.createEntityManager();

}

public void persistTrade(Trade t) {

entityManager.persist(t);

}

public static void main(String[] args) {

EntityManagerTest test = new EntityManagerTest();

test.init();

}

}

来自build.gradle的依赖项:

dependencies {

compile 'org.springframework:spring-context:4.1.6.RELEASE'

compile 'org.springframework:spring-jdbc:4.1.6.RELEASE'

compile 'org.springframework:spring-orm:4.1.6.RELEASE'

compile 'commons-dbcp:commons-dbcp:1.4'

compile 'mysql:mysql-connector-java:5.1.18'

compile 'org.hibernate:hibernate-core:3.6.0.Final'

compile 'org.hibernate:hibernate-entitymanager:3.6.0.Final'

compile 'junit:junit:4.7'

compile 'log4j:log4j:1.2.14'

}

解决方法:

你可以尝试几件事:

>检查您的src / main / resources文件夹是否在您的类路径中.在Eclipse中,它意味着右键单击项目>属性> Java Build Path并确保在Source选项卡下指定src / main / resources.如果不存在,请单击“添加文件夹”以添加资源文件夹.

>如果上述方法无效,请尝试将persistence.xml移至src / main / java / META-INF文件夹.

>将persistence.xml中的提供程序更改为

org.hibernate.ejb.HibernatePersistence

标签:java,spring,jpa,hibernate,spring-orm

来源: https://codeday.me/bug/20190623/1273594.html

 类似资料: