【问题标题】:Spring Hibernate: Values not inserting into databaseSpring Hibernate:值未插入数据库
【发布时间】:2017-03-26 09:13:04
【问题描述】:

我似乎无法向我的表中添加值。没有错误,但值没有插入我的数据库中。提交表单后,不会出现任何错误。

在查看控制台时,会显示:

Hibernate: 
    insert 
    into
        referral
        (address, doctor_contact_no, doctor_name, facility_contact_no, facility_type, referral_no, referring_from, referring_to) 
    values
        (?, ?, ?, ?, ?, ?, ?, ?)

我已经尝试过记录,以防我的控制器无法读取我提交的表单。

我正在保存的实体/模型的代码片段

@Entity
@Table(name="referral")
public class Referrals {
    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;

    @Column
    private String referral_no;
    @Column
    private String facility_contact_no;
    @Column
    private String referring_from;
    @Column
    private String referring_to;
    @Column
    private String facility_type;
    @Column
    private String address;
    @Column
    private String doctor_name;
    @Column
    private String doctor_contact_no;' 

我的服务类的代码片段

@Service
@Transactional
public class ReferralServicesImpl implements ReferralServices{
    @Autowired
    private ReferralDao referralDao;

    public List<Referrals> list(){
        return referralDao.list();
    }
    public boolean saveReferral(Referrals referral){

        if(referralDao.saveReferral(referral))
            return true;
        else
            return false;
    }
}

控制器方法的代码片段

@RequestMapping(value = "/teleaudiology/referral", method = RequestMethod.GET)
        public ModelAndView showForm() {
            return new ModelAndView("referrals", "referrals", new Referrals());
        }

        @RequestMapping(value = "/teleaudiology/referrals", method = RequestMethod.POST)
        public String submit(@Valid @ModelAttribute("referrals")Referrals referral, 
          BindingResult result, ModelMap model) {
            if (result.hasErrors()) {
                return "error";
            }
            System.out.println("referral: "+referral.getDoctor_name());
            if(referralServices.saveReferral(referral))
                return "redirect:../teleaudiology";
            else 
                return "redirect:../teleaudiology";
        }

这里是 ReferralDao 类

public interface ReferralDao {
    public boolean saveReferral(Referrals referral);
    public List<Referrals> list();
}

ReferralDao 实现

@Repository
@Transactional
public class ReferralDaoImpl implements ReferralDao {
    @Autowired
    SessionFactory session;
    Transaction trans;

    public boolean saveReferral(Referrals referral) {
        // TODO Auto-generated method stub
        //System.out.println("Saving..."+referral.getReferring_to_address());

        trans=session.getCurrentSession().beginTransaction();
        session.getCurrentSession().saveOrUpdate(referral);
        return true;
    }

    public List<Referrals> list() {
        // TODO Auto-generated method stub
        return session.getCurrentSession().createQuery("from Referrals").list();
    }

}

我尝试过使用

trans=session.getCurrentSession().getTransaction();

但是导致了这个错误

`saveOrUpdate is not valid without active transaction`

来自 servlet-context.xml 的片段

<tx:annotation-driven transaction-manager="transactionManager" />
    <beans:bean id="transactionManager"  class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />
    </beans:bean>

【问题讨论】:

  • 你能分享你的 ReferralDao 课程吗?
  • hi @shubham 添加了 ReferrDao 类
  • 不要调用 beginTransaction()。您的方法是事务性的,Spring 为您处理事务。此外,请尊重 Java 命名约定,不要将复数形式用于应该是单数的东西(Referrals、ReferralServices)。最后,您的 DAO saveReferral 方法应该返回 void。这个布尔永远为真的返回值是无用且令人困惑的。
  • 那么,我应该只有“trans = session.getCurrentSession();”吗? @JBNizet
  • 我尝试使用trans=session.getCurrentSession().getTransaction();,但导致了这个错误saveOrUpdate is not valid without active transaction@JBNizet

标签: java spring hibernate database-management


【解决方案1】:

尝试使用以下代码

 Session s = sessionFactory.getCurrentSession();
 s.save(object);

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
猜你喜欢
  • 2022-01-08
  • 2014-11-20
  • 2012-12-20
  • 2012-07-22
  • 2017-12-01
  • 2016-05-07
  • 1970-01-01
  • 2017-11-20
  • 2011-07-07
相关资源
最近更新 更多