[size=medium;][size=x-small] 虽然说hibernate现在支持了annotation注解方式进行映射,但是仍然有的诸多的不完善与不稳定。
特别是最近在开发项目的过程中,居然还出现莫名奇妙的错误,一开整的人都差点崩溃了!最后,测试出来,居然是annotation的支持出问题。
而问题更是让人崩溃呢!在java项目中使用annotation是没有任何问题的,可是一改用web项目时,就一定报错。这时只能改用xml来配置了!
其中之一的bug:多对一(@ManyToOne)
例子如下:[/size] [/size]
java代码
User类代码
package hibernater.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Table(name="t_user")
@Entity
public class User {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Group类代码:
package hibernater.model;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Table(name="t_group")
@Entity
public class Group {
private int id;
private String name;
private Set groupSet=new HashSet();
@OneToMany
@JoinColumn(name="groupId")
public Set getGroupSet() {
return groupSet;
}
public void setGroupSet(Set groupSet) {
this.groupSet = groupSet;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Test测试类:
package com.test;
import java.util.Date;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class Test {
private static SessionFactory sf;
@Before
public static void before() {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
}
@Test
public void testSchemaExport() {
new SchemaExport(new AnnotationConfiguration().configure()).create(
true, true);
}
@After
public static void after() {
sf.close();
}
}
其他如hibernate.cfg.xml配置都是正确的,如果这是在java项目中执行时没有问题的,
可是如果放在web项目中,就一定会报如下错误:
java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
测试了很多的方法,应该可以证明这是hibernate3.6中annotation的一个bug
分享到:
相关推荐
javax.persistence.OneToMany.class javax.persistence.OneToOne.class javax.persistence.OptimisticLockException.class javax.persistence.OrderBy.class javax.persistence.OrderColumn.class javax/persistence...
Java持久化API(Java Persistence API,简称JPA)是Java平台上的一个标准,用于管理关系数据库中的数据。它为Java应用程序提供了一种对象/关系映射(ORM)工具,使得开发者可以使用面向对象的方式来操作数据库,而...
在更现代的项目中,通常会使用JPA 2.x,对应的jar包可能是`javax.persistence-api.jar`或者其他JPA供应商的实现库,如Hibernate的`hibernate-entitymanager.jar`。如果项目依赖EclipseLink,确保添加了完整的Eclipse...
【javax.persistence.jar.zip】是一个包含Java持久化API(Java Persistence API,简称JPA)的压缩文件,这个API是Java EE(Enterprise Edition)平台的核心组成部分,主要用于处理Java对象与数据库之间的映射关系,...
虽然现在的JPA实现通常使用Hibernate、EclipseLink等开源框架,但`ejb3-persistence.jar`在历史发展中起到了关键作用,它是JPA规范的一个早期实现。 通过使用JPA规范的注解,开发者可以轻松地在Java应用程序中管理...
javax.persistence-api-2.2.jar框架包,仅供大家学习使用,谢谢!
“Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity”,查找资料发现是缺少jar包. 添加此包就OK了。 更多说明:https://blog.csdn.net/kingmax54212008/article/details/82762624
是一个javax.persistence java资源注解
javax.persistence-2.0.0.jar 解决Hibernate JPA不兼容问题。
Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。JPA 2.0是该规范的一个重要版本,它在JPA 1.0的基础上引入了许多增强功能,提高了开发人员的生产力和数据库操作...
下载后,执行:java -jar glassfish-persistence-installer-v2.1-b23.jar 把得到的toplink-essentials.jar放在classpath下就可以用了! 在这里可以找到原码:...
《深入理解SpringSource javax.persistence-2.0.0.jar及其在Maven中的应用》 在Java开发领域,持久层框架的使用是不可或缺的,而javax.persistence则是Java持久化API(JPA)的核心部分,用于规范对象关系映射(ORM...
基于git事务82dd749的javax.persistence构建 org.eclipse.persistence/javax.persistence/2.0.5/javax.persistence-2.0.5.jar
基于git事务82dd749的javax.persistence构建 org.eclipse.persistence/javax.persistence/2.2.1/javax.persistence-2.2.1.jar
在Java编程领域,`javax.persistence`是Java持久化API(Java Persistence API)的一部分,这是一个用于管理关系数据库的框架。这个规范定义了一组注解,使得开发者可以方便地将对象持久化到关系数据库中,而无需编写...
Classes contained in javax.jms.jar: javax.transaction.xa.XAResource.class javax.jms.BytesMessage.class javax.jms.Message.class javax.jms.JMSException.class javax.jms.Destination.class javax.jms....
javax.jms.BytesMessage.class javax.jms.Connection.class javax.jms.ConnectionConsumer.class javax.jms.ConnectionFactory.class javax.jms.ConnectionMetaData.class javax.jms.DeliveryMode.class javax.jms....
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....