Hibernate一对一报错了。。。 1C

tomcat启动报错,hibernate一对一问题。
主要错误日志:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\import\WEB-INF\classes\spring-hibernate.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: com.bean.web.Attribute, at table: profile, for columns: [org.hibernate.mapping.Column(attribute)]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    ... 37 common frames omitted

Caused by: org.hibernate.MappingException: Could not determine type for: com.bean.web.Attribute, at table: profile, for columns: [org.hibernate.mapping.Column(attribute)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:349) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:322) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.mapping.Property.isValid(Property.java:241) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.mapping.RootClass.validate(RootClass.java:270) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1360) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1851) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:343) ~[spring-orm-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:431) ~[spring-orm-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:416) ~[spring-orm-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) ~[spring-beans-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    ... 44 common frames omitted

Profile实体类:

@Entity
@Table(name = "profile")
public class Profile {


    private Long user_id;
    private Long gid;
    private String real_name = "";

    @OneToOne(mappedBy = "gid", cascade = CascadeType.ALL)
    private Attribute attribute;

    @Id
    @GeneratedValue
    public Long getUser_id() {
        return user_id;
    }

    public void setUser_id(Long user_id) {
        this.user_id = user_id;
    }

    public Long getGid() {
        return gid;
    }

    public void setGid(Long gid) {
        this.gid = gid;
    }

    public String getReal_name() {
        return real_name;
    }

    public void setReal_name(String real_name) {
        this.real_name = real_name;
    }

    public Attribute getAttribute() {
        return attribute;
    }

    public void setAttribute(Attribute attribute) {
        this.attribute = attribute;
    }

Attribute实体类:

@Entity
@Table(name = "attribute")
public class Attribute {

    private transient Profile gid;

    private Long id;
    private String cert_number;

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @OneToOne(cascade = CascadeType.DETACH)
    @JoinColumn(name = "gid")
    public Profile getGid() {
        return gid;
    }

    public void setGid(Profile gid) {
        this.gid = gid;
    }

    public String getCert_number() {
        return cert_number;
    }

    public void setCert_number(String cert_number) {
        this.cert_number = cert_number;
    }

spring-hibernate.xml配的扫描:

    <!-- 配置hibernate session工厂 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">none</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext
                </prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.format_sql">false</prop>
            </props>
        </property>

        <!-- 自动扫描注解方式配置的hibernate类文件 -->
        <property name="packagesToScan">
            <list>
                <value>com.bean..</value>
                <value>com.bean</value>
            </list>
        </property>
    </bean>

我能怎么办?我也很绝望啊~~~~试过很多方法,把一对一关系注掉就可以。开了就报错。。。

1个回答

你可以试着把主表的getgid方法中的返回值改为id,你在从表里的mappedBy("gid")应该写成id,不要和数据库表字段一致

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SSH集成hibernate配置一对一关系出错

先说明一下我的问题,我想做的是对某个表的更新操作,但是我发现更新操作虽然执行了但是没有更新数据,后来想到是因为这个表中有一个字段是另一个表的主键,也就是这两个表有关联,一个表是用户表YSysUserinfo,一个表是学生表SysStudentUserInfo,现在学生表有一个YSU_ID是用户表的主键,现在想给他们配置外键关联一对一的关系,但是运行查询就会出错,配置和错误马上就贴出

hibernate 一对一双向关联 无法保存

<p>大侠们,小弟今天在项目中遇到一个问题。</p> <p>就是双向关联保存的时候老报这个版本号不对错误:</p> <p> </p> <pre name="code" class="java">2012-10-18 17:15:20,234 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] - Could not synchronize database state with session org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.jinying.entity.user.Seller#4c816ca7cdaf4ab386de38b706cde64e]</pre>   <p> </p> <p>关联关系:</p> <p> </p> <pre name="code" class="xml"> &lt;one-to-one name="seller" class="com.jinying.entity.user.Seller" cascade="all" property-ref="user" &gt;&lt;/one-to-one&gt; </pre> <p> </p> <p> </p> <pre name="code" class="xml"> &lt;many-to-one name="user" update="false" insert="false" cascade="save-update" class="com.jinying.entity.user.User" column="usid" unique="true" /&gt; </pre> <p> </p> <p> </p> <pre name="code" class="java"> user.setSeller(seller); seller.setUser(user); UserService userService = (UserService) ctx.getBean("userService"); userService.save(user);</pre> <p> </p> <p>但是执行的时候并不是2个insert而是先insert user再update更新seller,如下:</p> <p> </p> <pre name="code" class="java">Hibernate: insert into b_users (VerID, IsDel, username, password, CreateUserID, CreateUser, CreateDate, iD) values (?, ?, ?, ?, ?, ?, ?, ?) Hibernate: update b_sellers set VerID=?, IsDel=?, username=?, realname=?, sex=?, email=?, age=?, addr=?, postcode=?, phone=?, mobile=?, comp=?, ismain=?, idcard=?, idcardurl=?, ischeck=?, CheckUserID=?, CheckUser=?, CheckDate=?, CreateUserID=?, CreateUser=?, CreateDate=?, ModifyUserID=?, ModifyUser=?, ModifyDate=?, PermitUserID=?, PermitUser=?, PermitDate=?, wangwang=?, companyid=?, submitApply=? where iD=? and VerID=? </pre> <p> </p> <p>不知道这到底是为什么,请大侠们帮忙下,谢谢。</p> <p> </p>

Hibernate项目报错,初学者困扰了好久了

最近开始学习hibernate框架,确实觉得比JDBC强大许多。目前在做一个网上评教系统,因为表关系联系比较紧密,所以决定用hibernate框架,刚刚开始的时候涉及到的实体类比较少,还是很顺利的,到后来,实体和关系稍微复杂了一点,问题就出来了。困扰了我好久,简直快要折磨死我了,这里出现了错误,后面的完全就没法做。 ![图片说明](https://img-ask.csdn.net/upload/201505/04/1430698916_56844.png) 看报错,其实也能大致知道是Teacher.java或Teacher.hbm.xml出了问题,可是我检查了不下10遍了,实在是看不出来哪里的问题,贴出我的代码 Teacher.java package cn.pj.zyf.domain; import java.io.Serializable; import java.util.Set; public class Teacher implements Serializable{ private String tid; private String tname; private String pic; private String description; private Set<Course> list_courses; public String getTid() { return tid; } public void setTid(String tid) { this.tid = tid; } public String getTname() { return tname; } public void setTname(String tname) { this.tname = tname; } public String getPic() { return pic; } public void setPic(String pic) { this.pic = pic; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Set<Course> getList_courses() { return list_courses; } public void setList_courses(Set<Course> list_courses) { this.list_courses = list_courses; } } Teacher.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="cn.pj.zyf.domain.Teacher" table="teacher"> <id name="tid" column="tid" type="string" > <generator class="assigned"></generator> </id> <property name="tname" column="tname" type="string"></property> <property name="pic" column="pic" type="string"></property> <property name="description" column="description" type="string"></property> <!-- 教师 与 课程 一对多关联 --> <set name="courses" cascade="all" inverse="false"> <!-- key是用来描述外键 --> <key> <column name="tid"></column> </key> <one-to-many class="cn.pj.zyf.domain.Course" /> </set> </class> </hibernate-mapping>

hibernate一对多的删除问题(郁闷)

one : <set name="precontracts" inverse="false" lazy="false" cascade="all"> <key> <column name="SCHEDULE_ID" precision="8" scale="0" not-null="true" /> </key> <one-to-many class="com.oa.beans.Precontract" /> </set> many: <many-to-one name="schedule" class="com.oa.beans.Schedule" fetch="select" update="false" cascade="all"> <column name="SCHEDULE_ID" precision="8" scale="0" not-null="true" /> </many-to-one> Schedule.java: public class Schedule implements java.io.Serializable { // Fields private Long scheduleId; private Meetinginfo meetinginfo; private String title; private String address; private Date begintime; private Date endtime; private String schcontent; private Userinfo userinfo; private Date createtime; private Long ifprivate; private Set precontracts = new HashSet(0); // Constructors // Property accessors public Long getScheduleId() { return this.scheduleId; } public void setScheduleId(Long scheduleId) { this.scheduleId = scheduleId; } public Meetinginfo getMeetinginfo() { return this.meetinginfo; } public void setMeetinginfo(Meetinginfo meetinginfo) { this.meetinginfo = meetinginfo; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public String getAddress() { return this.address; } public void setAddress(String address) { this.address = address; } public Date getBegintime() { return this.begintime; } public void setBegintime(Date begintime) { this.begintime = begintime; } public Date getEndtime() { return this.endtime; } public void setEndtime(Date endtime) { this.endtime = endtime; } public String getSchcontent() { return this.schcontent; } public void setSchcontent(String schcontent) { this.schcontent = schcontent; } public Date getCreatetime() { return this.createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } public Long getIfprivate() { return this.ifprivate; } public void setIfprivate(Long ifprivate) { this.ifprivate = ifprivate; } public Set getPrecontracts() { return this.precontracts; } public void setPrecontracts(Set precontracts) { this.precontracts = precontracts; } public Userinfo getUserinfo() { return userinfo; } public void setUserinfo(Userinfo userinfo) { this.userinfo = userinfo; } } Precontract.java: public class Precontract implements java.io.Serializable { // Fields private Long precontractId; private Userinfo userinfo; private Schedule schedule; // Constructors /** default constructor */ public Precontract() { } /** full constructor */ public Precontract(Userinfo userinfo, Schedule schedule) { this.userinfo = userinfo; this.schedule = schedule; } // Property accessors public Long getPrecontractId() { return this.precontractId; } public void setPrecontractId(Long precontractId) { this.precontractId = precontractId; } public Userinfo getUserinfo() { return this.userinfo; } public void setUserinfo(Userinfo userinfo) { this.userinfo = userinfo; } public Schedule getSchedule() { return this.schedule; } public void setSchedule(Schedule schedule) { this.schedule = schedule; } } 异常: org.springframework.jdbc.UncategorizedSQLException: Hibernate flushing: Could not execute JDBC batch update; uncategorized SQLException for SQL [update OA.PRECONTRACT set SCHEDULE_ID=null where SCHEDULE_ID=?]; SQL state [72000]; error code [1407]; ORA-01407: 无法更新 ("OA"."PRECONTRACT"."SCHEDULE_ID") 为 NULL ; nested exception is java.sql.BatchUpdateException: ORA-01407: 无法更新 ("OA"."PRECONTRACT"."SCHEDULE_ID") 为 NULL

使用hibernate注解报错:org.hibernate.QueryException

最近用maven+SSH做项目练手,测试时用hql语句查表时报错,使用的注解配置类属性的关联关系,因为对hibernate注解不太熟练,其余的使用hibernate反向生成的配置文件。 单元测试报错如下: org.hibernate.QueryException: could not resolve property: account of: beanFactory.Category [from beanFactory.Category c left join fetch c.account where c.type like :type] Category 类中有个类属性 Account 对应 数据库中category表account_id字段,也是外键,绑定account表中的id Category类的配置文件:![因为已经使用注解配置多对一所以将配置文件中的该段注释了](https://img-ask.csdn.net/upload/201709/16/1505533503_915389.png) Account类的配置文件:![同样使用注解所以将该段注释](https://img-ask.csdn.net/upload/201709/16/1505534322_35584.png) Category类中使用的注解如下:![只有多对一使用注解方式,其他的关联映射在反向生成的配置文件中](https://img-ask.csdn.net/upload/201709/16/1505533773_321114.png) Account类中使用的注解如下:![图片说明](https://img-ask.csdn.net/upload/201709/16/1505538562_667852.png) hql语句如下:![图片说明](https://img-ask.csdn.net/upload/201709/16/1505534010_85576.png) 在完全用配置文件的情况下可以执行,总觉得是注解的问题导致查询时找不到account字段,请大侠帮忙分析下是哪里出了问题?

hibernate级联删除报错,错误信息如下,求解答?

hibernate级联删除报错Cannot delete or update a parent row: a foreign key constraint fails (`jk28`.`user_info_p`, CONSTRAINT `FK2BF43F36EB6FED6` FOREIGN KEY (`MANAGER_ID`) REFERENCES `user_p` (`USER_ID`)) 这是哪里出现了问题了呢?求大神解答?? # User实体类 public class User extends BaseEntity{ private String id; private Dept dept;//用户与部门 多对一 private Userinfo userinfo ; //用户与用户扩展信息 一对一 //private Set<Role> roles = new HashSet<Role>(0);//用户与角色 多对多 private String userName;//用户名 private String password;//密码 要加密 private Integer state;//状态 public String getId() { return id; } public void setId(String id) { this.id = id; } public Dept getDept() { return dept; } public void setDept(Dept dept) { this.dept = dept; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getState() { return state; } public void setState(Integer state) { this.state = state; } public Userinfo getUserinfo() { return userinfo; } public void setUserinfo(Userinfo userinfo) { this.userinfo = userinfo; } // public Set<Role> getRoles() { // return roles; // } // public void setRoles(Set<Role> roles) { // this.roles = roles; // } } **# Userinfo实体类** public class Userinfo extends BaseEntity { private String id; private String name;//姓名 private User manager;//用户与直属领导 多对一 private Date joinDate;//入职时间 private Double salary;//薪水 private Date birthday; //出生年月 private String gender; //性别 private String station;//岗位 private String telephone;//电话 private Integer degree;//等级 private String remark;// 备注 private Integer orderNo;//排序号 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public User getManager() { return manager; } public void setManager(User manager) { this.manager = manager; } public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getStation() { return station; } public void setStation(String station) { this.station = station; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public Integer getDegree() { return degree; } public void setDegree(Integer degree) { this.degree = degree; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public Integer getOrderNo() { return orderNo; } public void setOrderNo(Integer orderNo) { this.orderNo = orderNo; } } **# User映射文件****** <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.jk.domain"> <class name="User" table="USER_P" dynamic-insert="true" dynamic-update="true"> <id name="id" column="USER_ID"> <generator class="assigned"></generator> </id> <property name="userName" column="USER_NAME"></property> <property name="password" column="PASSWORD"></property> <property name="state" column="STATE"></property> <property name="createBy" column="CREATE_BY"></property> <property name="createDept" column="CREATE_DEPT"></property> <property name="createTime" column="CREATE_TIME"></property> <property name="updateBy" column="UPDATE_BY"></property> <property name="updateTime" column="UPDATE_TIME"></property> <!-- private Dept dept;//用户与部门 多对一 --> <many-to-one name="dept" class="Dept" column="DEPT_ID"></many-to-one> <!-- private Userinfo userinfo ; //用户与用户扩展信息 一对一 --> <one-to-one name="userinfo" class="Userinfo" cascade="all"></one-to-one> <!-- private Set<Role> roles = new HashSet<Role>(0);//用户与角色 多对多 <set name="roles" table="ROLE_USER_P"> <key column="USER_ID"></key> <many-to-many class="Role" column="ROLE_ID"></many-to-many> </set> --> </class> </hibernate-mapping> # Userinfo映射文件****** <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.jk.domain"> <class name="Userinfo" table="USER_INFO_P"> <id name="id" column="USER_INFO_ID"> <generator class="assigned"> </generator> </id> <property name="name" column="NAME"></property> <property name="joinDate" column="JOIN_DATE"></property> <property name="salary" column="SALARY"></property> <property name="birthday" column="BIRTHDAY"></property> <property name="gender" column="GENDER"></property> <property name="station" column="STATION"></property> <property name="telephone" column="TELEPHONE"></property> <property name="degree" column="DEGREE"></property> <property name="remark" column="REMARK"></property> <property name="orderNo" column="ORDER_NO"></property> <property name="createBy" column="CREATE_BY"></property> <property name="createDept" column="CREATE_DEPT"></property> <property name="createTime" column="CREATE_TIME"></property> <property name="updateBy" column="UPDATE_BY"></property> <property name="updateTime" column="UPDATE_TIME"></property> <!-- private User manager;//用户与直属领导 多对一 <many-to-one name="manager" class="User" column="MANAGER_ID"></many-to-one>--> </class> </hibernate-mapping>

hibernate 一对多 多的一方无法用get set方法

<form action="productUpload" method="post"> <table> <tr> <td>产品编号:</td> <td><input type="text" name="pro.productNum"></td> </tr> <tr> <td>产品标题:</td> <td><input type="text" name="pro.productTitle"></td> <td rowspan="3"> <div id="preview"> <img id="imghead" border=0 > </div> </td> </tr> <tr> <td>产品价格:</td> <td><input type="text" name="pro.productPrice"></td> <td></td> </tr> <tr> <td>产品数量:</td> <td><input type="text" name="pro.productMax"></td> </tr> <tr> <td>产品类别:</td> <td> <select name="pro.sort"> <c:forEach items="${sortList }" var="sort"> <option value="${sort }" >${sort.sort }</option> </c:forEach> </select> </td> <td><input type = "file" name="file" style="width:70px" onchange="previewImage(this)" > </td> </tr> <tr> <td>文字说明:</td> <td><textarea rows="" cols="" name="pro.productDescribe"></textarea> </td> </tr> <tr> <td></td> <td><input type="submit" value="发布"></td> </tr> </table> </form> ------------------------------------------------------------------------- ------------------------------------------------------------------------- package action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import service.ProductService; import com.opensymphony.xwork2.ActionSupport; import com.pojo.Product; import com.pojo.Sort; public class ProductUploadAction extends ActionSupport { private HttpServletRequest request; private Product pro; private ProductService proService; public ProductService getProService() { return proService; } public void setProService(ProductService proService) { this.proService = proService; } public Product getPro() { return pro; } public void setPro(Product pro) { this.pro = pro; } @Override public String execute() throws Exception { // TODO Auto-generated method stub request = ServletActionContext.getRequest(); ** //System.out.print(pro.getSort().getSort());** return "success"; } } 加粗哪一行总是报错 --------------------------------------------------------------------------- java.lang.NullPointerException action.ProductUploadAction.execute(ProductUploadAction.java:37) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)

hibernate,3个表,多对多对多 怎么解决

老师、班级、科目 一个老师能教多门科目,一门科目能有多个老师教; 一个班级能有多个科目,一门科目有多个班级上; 一个班能有多个老师,一个老师能教多个班; 多对多对多的关系 按道理需要建一个有3个字段的连接表,把(老师、班级、科目)连接在一起。 但是放在hibernate里要怎么写表之间的配置文件呢?

hibernate报错object references an unsaved transient instance

hibernate报错object references an unsaved transient instance - save the transient instance before flushing: com.king3d.manage.domain.Sys2; 从URL传入参数,会报这个错误,但是JUNIT中测试就没有任何问题,不知道原因。action与service代码如下 [code="java"] @Action(results = { @Result(type = "json") }, value = "saveSub") public String saveSub() throws Exception { Tools.decodeObject(sys2); dic.saveDictionaryData(sys2); resultStatus = "true"; return "success"; [/code] [code="java"] @Transactional public void saveDictionaryData(Sys2Vo sys2vo) throws Exception { Sys2 entry = new Sys2(); BeanUtils.copyProperties(sys2vo, entry); if(sys2vo.getId() > 0){ this.sys2Dao.update(entry); }else{ this.sys2Dao.save(entry); } sys2vo.setId(entry.getId()); } [/code] [code="java"] public class Sys2 { @Id @SequenceGenerator(name="sys2",sequenceName="SEQ_SYS2_ID",allocationSize=1 ) @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="sys2") private int id; private int key; private String value; @ManyToOne @JoinColumn(name="SYS1_ID") private Sys1 sys1; @ManyToOne @JoinColumn(name="PARENT_ID") private Sys2 sys2; @OneToMany(mappedBy="sys2") private List<Sys2> sys2s=new ArrayList<Sys2>(); public int getId() { return id; } public void setId(int id) { this.id = id; } public int getKey() { return key; } public void setKey(int key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public Sys1 getSys1() { return sys1; } public void setSys1(Sys1 sys1) { this.sys1 = sys1; } public Sys2 getSys2() { return sys2; } public void setSys2(Sys2 sys2) { this.sys2 = sys2; } public List<Sys2> getSys2s() { return sys2s; } public void setSys2s(List<Sys2> sys2s) { this.sys2s = sys2s; } } [/code]

Spring+Hibernate 在getCurrentSession的时候报错

以下是我的配置: spring-mvc.xml: ``` <!-- 加载配置文件 --> <context:property-placeholder location="WEB-INF/config/db.config.properties" /> <!-- 自动注入为bean --> <context:component-scan base-package="com.cherry.mall" /> <!-- 启动注解驱动的spring MVC功能,注册请求url和注解POJO类方法的映射 --> <mvc:annotation-driven> <!-- 返回json数据,@response使用 --> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/pages/" /> <property name="suffix" value=".jsp" /> </bean> <!--这里是对静态资源的映射 --> <!-- <mvc:resources mapping="/js/**" location="/resources/js/" /> <mvc:resources mapping="/css/**" location="/resources/css/" /> <mvc:resources mapping="/img/**" location="/resources/img/" /> --> ``` srping-hibernate: ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd"> <!-- 配置数据源 c3p0 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driver}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 请求超时时间 --> <property name="checkoutTimeout" value="30000" /> <!-- 每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 --> <property name="idleConnectionTestPeriod" value="30" /> <!-- 连接数据库连接池最大空闲时间 --> <property name="maxIdleTime" value="30" /> <!-- 连接池初始化连接数 --> <property name="initialPoolSize" value="5" /> <property name="minPoolSize" value="5" /> <property name="maxPoolSize" value="20" /> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 --> <property name="acquireIncrement" value="5" /> </bean> <!-- 配置hibernate的SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 注入数据源 相关信息看源码 --> <property name="dataSource" ref="dataSource" /> <!-- hibernate配置信息 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> <!-- 开启二级缓存 ehcache --> <!-- <prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop> <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop> <prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</prop> <prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.cache.provider_configuration_file_resource_path} </prop> --> </props> </property> <!-- 扫描hibernate注解配置的entity --> <property name="packagesToScan" value="com.cherry.mall.**.model" /> </bean> <!-- mybatis配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="/WEB-INF/config/mybatis-config.xml"></property> <property name="mapperLocations" value="classpath*:com/cherry/mall/**/mapping/*.xml"></property> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 配置事务增强处理Bean,指定事务管理器 --> <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> <!-- 配置详细事务处理语义 --> <tx:attributes> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="create*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="alter*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="get*" propagation="SUPPORTS" read-only="true" /> <tx:method name="query*" propagation="SUPPORTS" read-only="true" /> <tx:method name="find*" propagation="SUPPORTS" read-only="true" /> <tx:method name="select*" propagation="SUPPORTS" read-only="true" /> <tx:method name="load*" propagation="SUPPORTS" read-only="true" /> <!-- 其他采用默认事务方式 --> <tx:method name="*" /> </tx:attributes> </tx:advice> <!-- Spring aop事务管理 --> <aop:config> <!-- 配置切入点 --> <aop:pointcut id="transactionPointcut" expression="execution(* com.cherry.mall..*.service..*.*(..))" /> <!-- 指定在txAdvice切入点应用txAdvice事务增强处理 --> <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" /> </aop:config> </beans> ``` 报错信息: ``` org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134) at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014) at com.cherry.mall.common.dao.CommonDAO.getHBSession(CommonDAO.java:29) at com.cherry.mall.common.dao.CommonDAO.create(CommonDAO.java:48) at com.cherry.mall.common.service.CommonServiceImpl.create(CommonServiceImpl.java:72) at com.cherry.mall.message.service.impl.MessageServiceImpl.create(MessageServiceImpl.java:30) at com.cherry.mall.message.service.impl.MessageServiceImpl.create(MessageServiceImpl.java:1) at com.cherry.mall.message.controller.MessageController.save(MessageController.java:42) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) ``` 报错地点: ![图片说明](https://img-ask.csdn.net/upload/201708/17/1502946641_931733.png) 求大神指教

Hibernate多对多关系查询出所有结果

## 问题背景: 现在有三张表,学生、班级、课程,学生和班级为多对多,学生和课程为多对多,班级和课程是多对一,即一门课可以有多个班级。 我写的学生实体类: ``` private Integer id; private String name; private Set<Clazz> clazzs=new HashSet<>(); //n-n private Set<Course> courses=new HashSet<>(); //n-n ``` 现在想在表格里显示学生数据,重点是我想显示所有的学生数据包括重复的。比如,有个学生选了两门课,我就想分两行来显示。 但是用left join fetch只能查出一个student对象,这个对象里有两个set,但set又是无序的,不能通过顺序的iterator来遍历,否则同一行的课程和班级可能不匹配。 请问有什么好方法吗?新人刚学没多久

hibernate一对一主键问题

我有两个表(A,B),设置了一对一的双向关联,数据库是mysql,A表设置了主键自动增加,而B表的主键是根据A表的主键生成的,就是两个表共用了A表的主键,现在对数据的添加,删除,查询都是没问题的,但是更新就会报错:org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update java.sql.BatchUpdateException: Duplicate entry '3' for key 'PRIMARY' 应该是主键重复了,网上也是这么说的,但是不知道怎么解决,级联我也设置了,cascade="all"!请问应该怎么解决!谢谢了!

一对多的更新问题

有两个表,通知表:id,notename; 接收人表:id,userid; <br />通知表与接收人表是oneToMany的关系 <br /> <br />我碰到的问题是:当用户把接收人改变时,接收人怎么更新?(在通知表中设置了级联,能不能通过hibernate设置,从接收人表中自动删除以前的接收人,插入现在的接收人?)

hibernate一对多注解 延迟加载失败

hibernate4.2 org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.xp.model.lmj.test_one.test_manys, could not initialize proxy - no Session at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:566) at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:186) @OneToMany(cascade = {CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch = FetchType.LAZY,mappedBy = "testone") 生成的语句没有查询多的一方 ,但是报错,错误为上述的错 ,我希望查询一的一方不查询多的一方。

hibernate级联更新外键问题

使用级联更新时,通过子表更新始终取不到主表的主键值,导致子表外键值始终是空的,而通过主表更新,子表能够取到所有值,小弟不解到底是怎么回事,请编程能人指教,代码如下: [code="java"]/*添加订单到数据库*/ Order_ order=new Order_(); User user=(User)session.get(Constants.LOGIN_USER); order.setUserId(user.getUserId()); order=this.orderService.saveOrder(order); /*添加订单项到数据库*/ List orderitems=(List)session.get(Constants.CART); //一对多级联更新 Set set=new HashSet(orderitems); order.setOrderitems(set); this.orderService.updateOrder(order); Orderitem orderitem=new Orderitem(); Hotel hotel=new Hotel(); for(int i=0;i < orderitems.size();i++){ orderitem=(Orderitem)orderitems.get(i); // orderitem.setOrder(order);使用多对一更新的时候始终取不到外键值,而一对多可行 // this.orderitemService.saveOrderitem(orderitem); /*预定后更新对应酒店的预定次数*/ hotel=this.hotelService.findByHotelId(String.valueOf(orderitem.getHotelId())); hotel.setTimes(hotel.getTimes()+1); this.hotelService.updateHotel(hotel); } [/code] hbm.xml文件 [code="java"]<hibernate-mapping> <class name="com.myssh.po.Order_" table="order_"> <id name="orderId" type="integer"> <column name="oid" /> <generator class="native" /> </id> <!-- cascade="all"级联保存,更新,删除附属物。inverse="true"设置关联关系由对方维护。为set属性 --> <set name="orderitems" cascade="all" inverse="false" lazy="false"> <!-- 相关联主键 --> <key column="oid"/> <!-- 设置一对多关联类 --> <one-to-many class="com.myssh.po.Orderitem"/> </set> <property name="userId" type="integer"> <column name="uid" /> </property> </class> </hibernate-mapping> [/code] [code="java"]<hibernate-mapping> <class name="com.myssh.po.Orderitem" table="orderitem"> <id name="orderitemId" type="integer"> <column name="oiid"/> <generator class="native"/> </id> <many-to-one name="order" column="oid" class="com.myssh.po.Order_" cascade="none" update="false" insert="false" not-null="true" /> <property name="orderId" type="integer"> <column name="oid"/> </property> <property name="hotelId" type="integer"> <column name="hid"/> </property> <property name="beginDate" type="date"> <column name="begin"/> </property> <property name="days" type="integer"> <column name="days"/> </property> <property name="type" type="integer"> <column name="type"/> </property> </class> </hibernate-mapping> [/code] PO部分 [code="java"]public class Order_ { private int orderId; private int userId; private Set orderitems;//一对多字段[/code] [code="java"]public class Orderitem { private int orderitemId; private int orderId; private int hotelId; private Date beginDate; private int days; private int type; private Order_ order;//多对一字段[/code]

hibernate中一对多查询进入死循环

如图,控制台不报错直接进入死循环,输出null,求助!![图片](https://img-ask.csdn.net/upload/201707/10/1499684988_174025.jpg)![图片](https://img-ask.csdn.net/upload/201707/10/1499685003_59794.jpg)

hibernate 使用注解 一对多双向关联,自建表中生成了两个外键

@Entity @Table(name = "t_classes3") public class Classes3 { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private int cid; @Column(name = "name") private String className; @OneToMany(mappedBy = "classes3", cascade = CascadeType.ALL) private Set<Student3> students; public Classes3() { super(); } @Entity @Table(name = "t_student3") public class Student3 { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private int sid; @Column(name = "name") private String studentName; @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "classesID") private Classes3 classes3; 测试代码: Classes3 classes = new Classes3(); classes.setClassName("一班"); classes.setStudents(new HashSet<Student3>()); Student3 student1 = new Student3(); student1.setStudentName("安德森"); Student3 student2 = new Student3(); student2.setStudentName("斯蒂芬"); classes.getStudents().add(student1); classes.getStudents().add(student2); session.save(classes); transaction.commit(); 自动建表时添加了两个外键 Hibernate: alter table t_student3 add constraint FKd9jbqete9tuogxlrtehh2a8c3 foreign key (cid) references t_classes3 (id) Hibernate: alter table t_student3 add constraint FK67p9rnr4sov80e8iyoxaamquu foreign key (classesID) references t_classes3 (id) ![图片说明](https://img-ask.csdn.net/upload/201803/19/1521449272_941808.png) 这是为什么?我只需要classesID这个外键

hibernate一对多关联list无法更新

Hibernate一对多数据关联。指的是双向一对多数据关联一个盒子Box有多个卡片card [code="java"] public class Box { @Id private Integer id; @OneToMany(fetch=FetchType.LAZY ) @JoinColumn(name="BOX_ID") @org.hibernate.annotations.Cascade( value={org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN}) @org.hibernate.annotations.IndexColumn(name="POS_NO", base=0) private List<Card> cards = new ArrayList<Card>(); .... } [/code] [code="java"] @Entity @Table(name="CARD") public class Card { @Id private Integer id; @ManyToOne @JoinColumn(name="BOX_ID") private Box box @Column(name="POS_NO") private Integer posno ; .... } [/code] 我如此注释映射是否存在问题? 从一个Box中在删除一个Card时报错!!!执行sql不对 [code="java"] public class Bus { public Box delandGet(Integer boxId, Integer delCardid){ Box bx = getHibernateTemplate().get( Box.class, boxId); List<Card> cds = bx.getCards(); Card del = null; int di = -1; for(int i=0; i<cds.size() ; i++){ Card c = cds.get(i); if(c.id.equals(delCardid){ del = c; di = i; break; } } if(di != -1){ cds.remove(di); del.setBox(null); getHibernateTemplate().delete( del ) ; } } } [/code] 删除始终不成功报错!! Hibernate: update CARD set BOX_ID=null, POS_NO=null where BOX_ID=? and id=? Hibernate: update CARD set BOX_ID=null, POS_NO=null where BOX_ID=? and id=?

Hibernate 删除记录的问题

应该是一个很简单的问题,下面的代码,无法实现user的删除,在日志输出中,只能看到findById()对应的Select SQL,delete函数对应的SQL看不到,应该是此句没有执行。 另外,如果直接用一个Session去做这些事的话,是可以实现删除的。 原因是什么? 请指教。 代码如下: [code="java"]TbUserDAO userDAO = new TbUserDAO(); TbUser user = userDAO.findById("admin"); userDAO.delete(user);[/code][/code] 其中,TbUser是实体类,TbUserDAO是DAO类,findByID与delelte函数代码如下: [code="java"] public TbUser findById(java.lang.String id) { log.debug("getting TbUser instance with id: " + id); try { TbUser instance = (TbUser) getSession().get( "org.user.model.TbUser", id); return instance; } catch (RuntimeException re) { log.error("get failed", re); throw re; } }[/code] [code="java"] public void delete(TbUser persistentInstance) { log.debug("deleting TbUser instance"); try { getSession().delete(persistentInstance); log.debug("delete successful"); } catch (RuntimeException re) { log.error("delete failed", re); throw re; } }[/code] [b]问题补充:[/b] [code="java"]Transaction tx = HibernateSessionFactory. getSession().beginTransaction(); TbUserDAO userDAO = new TbUserDAO(); TbUser user = userDAO.findById("admin"); userDAO.delete(user); tx.commit();[/code]这样提交以后,仍然没有删除掉该数据.是Session的问题吗? [b]问题补充:[/b] to [Zoran],你的办法不行!仍然没有删除那条记录! [b]问题补充:[/b] to [Zoran] 我这是一个Web项目,用的Struts2+Hibernate+Spring的架构,但是没有用Spring来管理Hibernate.不知道你说的spring声明式事务是什么意思?如果是你所说的问题,具体如何改正与操作. [b]问题补充:[/b] [code="java"] private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; }[/code] HibernateSessionFactory的代码以及实体类的代码都是由MyEclipse的Hibernate插件自动生成的.我觉得这里可能没什么问题.是不是Session的问题,我如果只用一个Session,来做这些查询与删除的话,是没有问题的. [b]问题补充:[/b] to [Zoran], 我没有用Spring来管理Hibernate.Spring的配置如下: applicationContext.xml [code="xml"]<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- <bean id="loginAction" class="org.xtwh.user.action.LoginAction" scope="prototype"> <property name="userService"> <ref bean="userService" /> </property> </bean> --> <bean id="queryTextAction" class="org.xtwh.query.action.QueryTextAction" /> <bean id="queryMainAction" class="org.xtwh.query.action.QueryMainAction" /> <bean id="queryResultAction" class="org.xtwh.query.action.QueryResultAction" /> <bean id="queryResultListAction" class="org.xtwh.query.action.QueryResultListAction" /> <bean id="jsonPluginAction" class="test.JsonPluginAction" /> <bean id="testAction" class="test.TestAction"/> </beans>[/code] [b]问题补充:[/b] to [Zoran] 我没有用Spring来管理Hibernate啊. [b]问题补充:[/b] to [Zoran],没有,这就是我全部的Spring了,我现在对Spring还不怎么了解,我想也不一定要用Spring来做Hibernate的管理吧. 另外,就上面这些代码来说,我觉得没有任何问题啊.为什么不能Delete? [b]问题补充:[/b] 另外,实际是,下面的代码,可以实现我要的删除操作: [code="java"] Session session = HibernateSessionFactory.getSession(); Transaction tx = null; try { tx = session.beginTransaction(); TbUser user = (TbUser)session.load(TbUser.class, "admin"); session.delete(user); } catch(Exception e) { } finally { tx.commit(); session.close(); }[/code] [b]问题补充:[/b] to [yuanyangaas] [quote]你用了spring的代理管理事务,hibernate失效[/quote] 你说的是什么意思?能详细点吗? [b]问题补充:[/b] getSession() 代码如下:它实际上还是调用了HibernateSessionFactory这个类的getSession函数.那个函数我在上面已经帖出来了,应该没有问题. [code="java"]public Session getSession() { return HibernateSessionFactory.getSession(); }[/code] [b]问题补充:[/b] to [all] 问题成功解决.谢谢大家的帮助,下面简单总结一下. 首先要说的是,问题都不像大家列举的那样. 具体原因是在Hibernate启动过程中出现了如下的Error: [code="txt"]ERROR[main](SchemaUpdate.java:155)- org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:155) Unsuccessful: alter table BSK.TB_CANCEL_INFO add constraint FK99DEA302D9E10358 foreign key (ORDERID) references BSK.TB_ORDER ERROR[main](SchemaUpdate.java:156)- org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:156) ORA-02275: 此表中已经存在这样的引用约束条件[/code] 类似这样的Error有9个,主要是由于外键约束引起的.(当时我以为这些错误没有什么影响,就没有在意.) 但是,我的Hibernate的映射是由MyEclipse自带的Hibernate插件自动生成的,不知道为什么会出现这种错误.在网上找了很久,没有找到相关的解决办法. 最后,我将 [code="xml"]<property name="hbm2ddl.auto">update</property>[/code] 改成了: [code="xml"]<property name="hbm2ddl.auto">create</property>[/code] 重新根据映射文件生成数据库,再将"create"改成"update",上面的错误消息. 这样关于数据库更新操作不能执行的问题就解决了. 最后要说的是Hibernate的Session管理方法,一般来说都是ThreadLocal的,所以在一个线程中使用getSession获取到的是同一个Session.

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐