Java Hibernate可以插入但不能删除条目

Java Hibernate可以插入但不能删除条目,java,database,spring,hibernate,Java,Database,Spring,Hibernate,我在尝试删除数据库表中的条目时遇到问题。 数据库的结构如下: User ---< UserET >--- ExitTicket User.java 但是,当我试图从数据库表中删除一个条目时,hibernate delete只执行“select”命令,从不执行“delete”命令 2018-11-05 09:28:27 INFO AuthService:72 - entro 1 ------ Hibernate: select exitticket0_.ticket_id as t

我在尝试删除数据库表中的条目时遇到问题。 数据库的结构如下:

User ---< UserET >--- ExitTicket
User.java 但是,当我试图从数据库表中删除一个条目时,hibernate delete只执行“select”命令,从不执行“delete”命令

2018-11-05 09:28:27 INFO  AuthService:72 - entro 1 ------
Hibernate: select exitticket0_.ticket_id as ticket_i1_0_0_, exitticket0_.dateET as dateET2_0_0_, exitticket0_.title as title3_0_0_ from exit_ticket exitticket0_ where exitticket0_.ticket_id=?
Mon Nov 05 09:28:27 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
2018-11-05 09:28:27 TRACE BasicBinder:65 - binding parameter [1] as [BIGINT] - [9]
2018-11-05 09:28:27 TRACE BasicExtractor:61 - extracted value ([dateET2_0_0_] : [VARCHAR]) - [2011-05-20]
2018-11-05 09:28:27 TRACE BasicExtractor:61 - extracted value ([title3_0_0_] : [VARCHAR]) - [test1]
2018-11-05 09:28:27 TRACE CollectionType:790 - Created collection wrapper: [com.jcg.spring.hibernate.pojo.ExitTicketEntry.userETs#9]
Hibernate: select userets0_.ticket_id as ticket_i4_2_0_, userets0_.answerId as answerId1_2_0_, userets0_.answerId as answerId1_2_1_, userets0_.answer as answer2_2_1_, userets0_.dateAnswer as dateAnsw3_2_1_, userets0_.ticket_id as ticket_i4_2_1_, userets0_.user_id as user_id5_2_1_, user1_.user_id as user_id1_1_2_, user1_.user_name as user_nam2_1_2_, user1_.user_password as user_pas3_1_2_, user1_.user_realname as user_rea4_1_2_, user1_.user_type as user_typ5_1_2_ from userET userets0_ left outer join USER user1_ on userets0_.user_id=user1_.user_id where userets0_.ticket_id=?
2018-11-05 09:28:27 TRACE BasicBinder:65 - binding parameter [1] as [BIGINT] - [9]
2018-11-05 09:28:27 INFO  AuthService:99 - deleted entry with ID#=9
我的服务类中的我的删除函数:

public void deleteById(Class<?> type, long id) {
    log.info("entro 1 ------");
    ExitTicketEntry e=(ExitTicketEntry) hibernateTemplate.load(type,id);
    hibernateTemplate.delete(e);
}
public void deleteById(类类型,长id){
log.info(“entro 1------”;
ExitCheckEntry e=(ExitCheckEntry)hibernateTemplate.load(类型,id);
hibernateTemplate.delete;
}

我已经阅读了很多论坛,但仍然有相同的问题,我不能删除任何条目。我遗漏了什么吗?

Spring建议不再使用HibernateTemplate。谢谢,他们为什么不推荐HibernateTemplate呢?他们推荐什么呢?我想他们推荐SpringDataJPA或StraightUpJPA。在您的示例中,您没有显示
UserEt
User
。您可能仍然有一个条目通过
UserEt
链接到
User
,因此删除
ExitTicketEntry
将导致违反约束。在尝试删除
exitckententry
之前,请确保删除
UserEt
中所有引用了
exitckententry
的条目。谢谢@K.Nicholas,我编辑了这篇文章,将“User”和“UserEt”包括在内。我首先从简单的任务开始,插入一个“ExitTicketEntry”,故意不在“UserET”表中添加任何条目,换句话说,不将该“ExitTicketEntry”与任何“User”相关联。然后,即使您认为您可能已经在数据中插入了任何值,也可能没有实际插入任何值。您应该确保在
addEntry
方法上注释了@Transaction,可能还有
deleteById
方法。我可以复制这个测试,但我会在SpringDataJPA中进行,如果我遇到问题,我会确保正确处理事务。请注意,除了没有看到任何
delete
之外,我没有看到任何
insert
@Entity
@Table(name="USER")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    private long id;
    private String user_name, user_password, user_type,user_realname;

    private Set<UserET> userETs= new HashSet<UserET>();

    public User() {
    }

    public User(String user_name,String user_password,String user_type,String user_realname) {
        this.user_name = user_name;
        this.user_password = user_password;
        this.user_type = user_type;
        this.user_realname=user_realname;
    }

    public void addExitTicketEntry(UserET group) {
        this.userETs.add(group);
    }

    @Id
    @GeneratedValue
    @Column(name="user_id")
    public long getId() {
        return id;
    }

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

    @OneToMany(mappedBy = "user", orphanRemoval=true)
    public Set<UserET> getUserETs() {
        return userETs;
    }

    public void setUserETs(Set<UserET> userETs) {
        this.userETs = userETs;
    }

    public void addUserETs(UserET userETs) {
        this.userETs.add(userETs);
    } ... + getters and setters
public void addEntryET(ExitTicketEntry exitTicketEntry) {
    log.info("adding entry in database");
    try {
        hibernateTemplate.save(exitTicketEntry);
    }
    catch(Exception e) {
        log.info("error adding an entry in the database->"+e.toString());
    }
}
2018-11-05 09:28:27 INFO  AuthService:72 - entro 1 ------
Hibernate: select exitticket0_.ticket_id as ticket_i1_0_0_, exitticket0_.dateET as dateET2_0_0_, exitticket0_.title as title3_0_0_ from exit_ticket exitticket0_ where exitticket0_.ticket_id=?
Mon Nov 05 09:28:27 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
2018-11-05 09:28:27 TRACE BasicBinder:65 - binding parameter [1] as [BIGINT] - [9]
2018-11-05 09:28:27 TRACE BasicExtractor:61 - extracted value ([dateET2_0_0_] : [VARCHAR]) - [2011-05-20]
2018-11-05 09:28:27 TRACE BasicExtractor:61 - extracted value ([title3_0_0_] : [VARCHAR]) - [test1]
2018-11-05 09:28:27 TRACE CollectionType:790 - Created collection wrapper: [com.jcg.spring.hibernate.pojo.ExitTicketEntry.userETs#9]
Hibernate: select userets0_.ticket_id as ticket_i4_2_0_, userets0_.answerId as answerId1_2_0_, userets0_.answerId as answerId1_2_1_, userets0_.answer as answer2_2_1_, userets0_.dateAnswer as dateAnsw3_2_1_, userets0_.ticket_id as ticket_i4_2_1_, userets0_.user_id as user_id5_2_1_, user1_.user_id as user_id1_1_2_, user1_.user_name as user_nam2_1_2_, user1_.user_password as user_pas3_1_2_, user1_.user_realname as user_rea4_1_2_, user1_.user_type as user_typ5_1_2_ from userET userets0_ left outer join USER user1_ on userets0_.user_id=user1_.user_id where userets0_.ticket_id=?
2018-11-05 09:28:27 TRACE BasicBinder:65 - binding parameter [1] as [BIGINT] - [9]
2018-11-05 09:28:27 INFO  AuthService:99 - deleted entry with ID#=9
public void deleteById(Class<?> type, long id) {
    log.info("entro 1 ------");
    ExitTicketEntry e=(ExitTicketEntry) hibernateTemplate.load(type,id);
    hibernateTemplate.delete(e);
}