JPA异常:Object:不是已知的实体类型

时间:2017-08-16 01:00:34

标签: java hibernate jpa

我是JPA的新手,我遇到了问题。我读到问题可能在于persistence.xml。

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="GreekTravelPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>entities.Room</class>
<class>entities.Country</class>
<class>entities.User</class>
<class>entities.RoomType</class>
<class>entities.Role</class>
<class>entities.Photo</class>
<class>entities.Availability</class>
<class>entities.Message</class>
<class>entities.Location</class>
<class>entities.Booking</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
  <property name="javax.persistence.jdbc.url"     value="jdbc:mysql://localhost:3306/greektraveldb?zeroDateTimeBehavior=convertToNull"/>
  <property name="javax.persistence.jdbc.user" value="psilos"/>
  <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
  <property name="javax.persistence.jdbc.password" value="psilos"/>
  <property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>

我的执行:

java.lang.IllegalArgumentException: Object: org.eclipse.persistence.internal.jpa.EntityManagerImpl@665ba601 is not a known entity type.
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3510)
at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeCloneWithReferences(RepeatableWriteUnitOfWork.java:384)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3481)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.mergeInternal(EntityManagerImpl.java:542)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.merge(EntityManagerImpl.java:519)

实际代码是

@Override public void update(User user) { 
    EntityManager em = EntityManagerHelper.getEntityManager(); 
    try { 
        EntityTransaction entityTrasacrion = em.getTransaction(); 
        entityTrasacrion.begin(); 
        em.merge(em); 
        entityTrasacrion.commit(); 
    } catch (RuntimeException e) { 
        throw e; 
    } finally { 
        EntityManagerHelper.closeEntityManager(); 
    } 
}

1 个答案:

答案 0 :(得分:3)

您正在将实体经理与实体经理合并!哎呀!

library(dplyr)
df1 <- data.frame(a = c(1,2,3),stringsAsFactors = F)
df1$b <-  list(c("1","2"),"4",c("5","6"))
> df1
  a    b
1 1 1, 2
2 2    4
3 3 5, 6
df2 <- data.frame(a=c(4,5),b=c("9","12"),stringsAsFactors = F)
> df2
  a  b
1 4  9
2 5 12
dplyr::bind_rows(df2,df1)
Error in bind_rows_(x, .id) : 
  Column `b` can't be converted from character to list

需要

em.merge(em);