【发布时间】:2013-11-12 11:33:58
【问题描述】:
我是hibernate-spring tirple的新手..
我只是尝试编写简单的登记簿.. 我有以下代码:
学生.java
@Entity(name = "STUDENTS")
@NamedQueries({
@NamedQuery(name = "getAllStudent", query = "SELECT k FROM STUDENTS k ORDER BY k.id DESC"),
@NamedQuery(name = "findByName", query = "SELECT k FROM STUDENTS k WHERE k.name LIKE :name")
})
public class Student {
@Column(name = "STUDENTNO", nullable = false)
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "SURNAME")
private String surname;
@Column(name = "AGE")
private String age;
// GET ve SET metods
StduentDAO.java
@Repository
@Transactional(readOnly = true)
public class StudentDAO implements IStudentDAO {
@PersistenceContext
EntityManager em;
@Override
public void deleteStudent(Student student) {
Student temp = em.getReference(Student.class, student.getId());
em.remove(temp);
System.out.println("### getting out from studentDAO deleteStudent method ###")
StudentController.java
@Component
@Scope(value = "request")
public class StudentController {
@Autowired
IStudentDAO studentDAO;
List<Student> allStudentList = new ArrayList();
Student student = new Student();
@PostConstruct
private void loadStudents() {
allStudentList = studentDAO.allStudent();
public void deleteStudent() {
studentDAO.deleteStudent(student);
System.out.println("### getting out from StudentController deleteStudent method ### ");
}
当我运行deleteStudent() 代码时,我得到了:
"###脱离studentDAO deleteStudent方法###"
"###脱离StudentController deleteStudent方法###"
我在输出中看到这些,但没有从数据库中删除。我搜索了一下,发现“每个实体管理器的方法都打开自己的会话”。这就是为什么它说我应该像上面那样写我的 StudentDAO 的 deleteStudent 方法..
我想我错过了一些关于 transaciton 的东西,但我还没有意识到..
我该怎么办?
谢谢..
【问题讨论】:
-
你为什么使用@Transactional(readOnly = true)??? readOnly = true 不删除。告诉我是否可以,所以我将此评论转换为答案。
-
我删除了“@Transactional(readOnly = true)”并再次运行。得到了相同的结果..我从方法中得到了输出消息,但没有被删除
-
我也不应该添加任何关于@Transactional 注释的内容,否则它是错误的位置和错误的参数?
-
@Transactional 必须保持仅删除 readOnly = true
-
Thnks 这个已解决的问题.. 您可以标记为已解决..
标签: spring hibernate transactions entity