/hibernate_001/src/com/myj/hibernate/model/User.javapackage com.myj.hibernate.model;import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;@Entity
@Table(name="t_user")
public class User {
private int usrId;
private String userName;
private Group group;

@Id
@GeneratedValue
public int getUsrId() {
return usrId;
}

public void setUsrId(int usrId) {
this.usrId = usrId;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
} @ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="fk_group")
public Group getGroup() {
return group;
} public void setGroup(Group group) {
this.group = group;
}
}
/hibernate_001/src/com/myj/hibernate/model/Group.java
package com.myj.hibernate.model;import java.util.HashSet;
import java.util.Set;import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;@Entity
@Table(name="t_group")
public class Group {
private int groupId;
private String groupName;
private Set<User> users = new HashSet<User>();

@Id
@GeneratedValue
public int getGroupId() {
return groupId;
}

public void setGroupId(int groupId) {
this.groupId = groupId;
} public String getGroupName() {
return groupName;
} public void setGroupName(String groupName) {
this.groupName = groupName;
}

@OneToMany(mappedBy="group", cascade={CascadeType.ALL} )
public Set<User> getUsers() {
return users;
} public void setUsers(Set<User> users) {
this.users = users;
}

}
/hibernate_001/test/com/myj/hibernate/model/HibernateORMMappingTest.javapackage com.myj.hibernate.model;import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.classic.Session;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;public class HibernateORMMappingTest {

public static SessionFactory sessionFactory;

@BeforeClass 
public static void beforeClass() {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (HibernateException e) {
e.printStackTrace();
}
}

/*@Test
public void testSaveUser() {
new SchemaExport(new AnnotationConfiguration().configure()).create(true, true);
Group group = new Group();
group.setGroupName("g1");

User user = new User();
user.setUserName("u1");
user.setGroup(group);

Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
//s.save(group);
s.save(user);


s.getTransaction().commit();
}*/

@Test
public void testSaveGroup() {
new SchemaExport(new AnnotationConfiguration().configure()).create(true, true);
User u1 = new User();
u1.setUserName("u1");
User u2 = new User();
u2.setUserName("u2");

Group group = new Group();
group.setGroupName("g1");
group.getUsers().add(u1);
group.getUsers().add(u2);

u1.setGroup(group);
u2.setGroup(group);

Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
s.save(group);
s.getTransaction().commit();
}

/*@Test
public void testGetUser() {
testSaveGroup();

Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
User u = (User)s.get(User.class, 1);
s.getTransaction().commit();
}

@Test
public void testGetGroup() {
testSaveGroup();

Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
Group g = (Group)s.get(Group.class, 1);
s.getTransaction().commit();

for(User u : g.getUsers()) {
System.out.println(u.getUserName());
}
}

@Test
public void testUpdateUser() {
testSaveGroup();

Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
User u = (User)s.load(User.class, 1);
u.setUserName("user");
u.getGroup().setGroupName("group");
s.getTransaction().commit();
}*/

@Test
public void testDeleteUser() {
testSaveGroup();

Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
//User u = (User)s.load(User.class, 1);
//u.setGroup(null);
//s.delete(u);
s.createQuery("delete from User u where u.userId = 1 ").executeUpdate();
s.getTransaction().commit();
}

@AfterClass
public static void afterClass() {
try {
sessionFactory.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}

}//User u = (User)s.load(User.class, 1);
//u.setGroup(null);
//s.delete(u);
用这三句的时候正常删除.s.createQuery("delete from User u where u.userId = 1 ").executeUpdate();
用这句的时候报错求助

解决方案 »

  1.   

    运行的是这个方法:testDeleteUser() 错误信息是Rerun com.myj.hibernate.model.HibernateORMMappingTest.testDeleteUser
    testDeleteUser(com.myj.hibernate.model.HibernateORMMappingTest)
    org.hibernate.QueryException: could not resolve property: userId of: com.myj.hibernate.model.User [delete from com.myj.hibernate.model.User u where u.userId = 1 ]
    at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:67)
    at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:61)
    at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1375)
    at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:304)
    at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:410)
    at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:617)
    at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:263)
    at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:210)
    at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:117)
    at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:113)
    at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:854)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1293)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4243)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3722)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1864)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:818)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.deleteStatement(HqlSqlBaseWalker.java:442)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
    at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1651)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
    at $Proxy13.createQuery(Unknown Source)
    at com.myj.hibernate.model.HibernateORMMappingTest.testDeleteUser(HibernateORMMappingTest.java:111)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
      

  2.   

    private int usrId;
    delete from User u where u.userId = 1睁天你美丽的小眼看看它们一样吗?