- 浏览: 410351 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
dageda_jgw:
...
JSF定义及原理 -
尘土飞扬:
这个在NB7中已经无效了,加不加都会提示 UTF8打不开
Netbeans统一UTF-8编码的方法 -
ouyangkang20:
不对
Struts target is null for setProperty(null, "x", [Ljava.lang.String;@179da9f) -
wpf523:
hahah,很不错啊
mysql安装图解教程 5.1 -
taburissmeng:
action中相应的属性没有set get方法就会报这样的错。 ...
Struts target is null for setProperty(null, "x", [Ljava.lang.String;@179da9f)
第一种方法:
比如有2个entity
class A {
private List <B> bs;
}
Class B {
}
A表
id, value
1, AAA
2, XXX
B表
id, value, AId
1, BBB, 1
2, CCC, 1
3, DDD, 1
以下两种方法,即使出现null也不出错
SELECT a FROM A a, In(a.bs) b WHERE a.value=XXX and b.value = BBB //光选A没问题
SELECT b FROM A a, In(a.bs) b WHERE a.value=XXX and b.value = BBB //光选B没问题
但是同时选a,b的时候就出错了,原因当时分析了一下,同时选a,b时
即SELECT a, b FROM A a, In(a.bs) b WHERE a.value=XXX and b.value = BBB
实际上JPA还是分步执行,即先选出a,然后在调用a.getB选出b,所以当没有满足A条件的a时,即a是null时,调用a.getB会出错的
当然,只是根据异常信息推测,并没有证实
第二种方法:
1.student,score,coure的实体关联定义如下: ------------------------------------------------------------------------------------------------ Student: @Entity ----------------------------------------------------------------------------------------------- Score: Course实体无关联注解。 -------------------------------------------------------------------------------------------------------------- student跟course是多对多单向,student可访问course student跟score是一对多双向 score跟course是多对一单向,score可访问course --------------------------------------------------------------------------------------------------------------- 查找学生1所有课程的所有成绩: 客户端: sql输出: 默认及时加载???(不是对集合默认延迟加载吗?),JPQL将查询改为如下也可以: 输出的sql语句如下:多对多关联查询sql语句
@Table(name="tb_student")
public class Student implements Serializable {
.....
private Set<Course> courses=new HashSet<Course>();
private Set<Score> scores=new HashSet<Score>();
.....
@ManyToMany
@JoinTable(name="tb_student_course",
joinColumns=@JoinColumn(name="student_id",referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="course_id",referencedColumnName="id")
)
public Set<Course> getCourses() {
return courses;
}
public void setCourses(Set<Course> courses) {
this.courses = courses;
}
@OneToMany(mappedBy="student")
public Set<Score> getScores() {
return scores;
}
public void setScores(Set<Score> scores) {
this.scores = scores;
}
}@Entity
@Table(name="tb_score")
public class Score implements Serializable {
@ManyToOne
@JoinColumn(name="course_id")
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
@ManyToOne
@JoinColumn(name="student_id")
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
-------------------------------------------------------------------------------------------------
public List<Score> findScoreByStudentId(Integer id) {
List<Score> ls=em.createQuery("select score from Student s join s.scores score where s.id=:id")
.setParameter("id", id)
.getResultList();
return ls;
}
ScoreDAO scoredao=(ScoreDAO)cxt.lookup("ScoreDAOBean/remote");
List<Score> scores1=scoredao.findScoreByStudentId(new Integer(1));
System.out.println("==查询学生1的所有科目成绩");
for(Score s:scores1 ){
System.out.println(s.getCourse().getName()+"--"+s.getScore());
}
结果输出:==查询学生1的所有科目成绩
course1--99.0
course2--98.0
22:21:07,765 INFO [STDOUT] Hibernate:
select
scores1_.id as id19_,
scores1_.course_id as course4_19_,
scores1_.student_id as student3_19_,
scores1_.score as score19_
from
tb_student student0_
inner join
tb_score scores1_
on student0_.id=scores1_.student_id
where
student0_.id=?
22:21:07,765 INFO [STDOUT] Hibernate:
select
course0_.id as id18_0_,
course0_.name as name18_0_,
course0_.description as descript3_18_0_,
course0_.optional as optional18_0_,
course0_.teacher as teacher18_0_
from
tb_course course0_
where
course0_.id=?
22:21:07,765 INFO [STDOUT] Hibernate:
select
student0_.id as id20_1_,
student0_.name as name20_1_,
student0_.description as descript3_20_1_,
student0_.class_id as class9_20_1_,
student0_.temporary as temporary20_1_,
student0_.age as age20_1_,
student0_.sex as sex20_1_,
student0_.birthday as birthday20_1_,
student0_.createDate as createDate20_1_,
classeo1_.id as id17_0_,
classeo1_.classname as classname17_0_
from
tb_student student0_
left outer join
tb_class classeo1_
on student0_.class_id=classeo1_.id
where
student0_.id=?
22:21:07,781 INFO [STDOUT] Hibernate:
select
course0_.id as id18_0_,
course0_.name as name18_0_,
course0_.description as descript3_18_0_,
course0_.optional as optional18_0_,
course0_.teacher as teacher18_0_
from
tb_course course0_
where
course0_.id=?
public List<Score> findScoreByStudentId(Integer id) {
List<Score> ls=em.createQuery("select s.scores from Student s where s.id=:id")
.setParameter("id", id)
.getResultList();
return ls;
}
结果输出:
==查询学生1的所有科目成绩
course1--99.0
course2--98.0
22:36:55,546 INFO [STDOUT] Hibernate:
select
scores1_.id as id19_,
scores1_.course_id as course4_19_,
scores1_.student_id as student3_19_,
scores1_.score as score19_
from
tb_student student0_
inner join
tb_score scores1_
on student0_.id=scores1_.student_id
where
student0_.id=?
22:36:55,546 INFO [STDOUT] Hibernate:
select
course0_.id as id18_0_,
course0_.name as name18_0_,
course0_.description as descript3_18_0_,
course0_.optional as optional18_0_,
course0_.teacher as teacher18_0_
from
tb_course course0_
where
course0_.id=?
22:36:55,546 INFO [STDOUT] Hibernate:
select
student0_.id as id20_1_,
student0_.name as name20_1_,
student0_.description as descript3_20_1_,
student0_.class_id as class9_20_1_,
student0_.temporary as temporary20_1_,
student0_.age as age20_1_,
student0_.sex as sex20_1_,
student0_.birthday as birthday20_1_,
student0_.createDate as createDate20_1_,
classeo1_.id as id17_0_,
classeo1_.classname as classname17_0_
from
tb_student student0_
left outer join
tb_class classeo1_
on student0_.class_id=classeo1_.id
where
student0_.id=?
22:36:55,562 INFO [STDOUT] Hibernate:
select
course0_.id as id18_0_,
course0_.name as name18_0_,
course0_.description as descript3_18_0_,
course0_.optional as optional18_0_,
course0_.teacher as teacher18_0_
from
tb_course course0_
where
course0_.id=?
发表评论
-
target is null for setProperty(null, "x", [Ljava.lang.String;@b0c40e)错误异常
2012-05-22 18:06 1131在提交form表单的时候发现后台经常出现类似异常, ... -
Spring 表达式语言 (Spring Expression Language) SpEL
2012-03-15 11:21 2067Spring 3.0 创建了一种新的方式用以配置对象的注入(s ... -
freemarker数据格式化问题(即数值超过四位数时有逗号)
2009-10-17 22:34 4092当数据超过3位的时候,freemarker会自动用逗号截取 格 ... -
Struts target is null for setProperty(null, "x", [Ljava.lang.String;@179da9f)
2009-10-15 18:34 15367上午工作中出现了这样一个异常: ognl. ... -
freemarker 的内建函数 contains 的使用
2009-09-16 20:01 19949freemarker 的内建函数 contains 的使用:& ... -
FreeMarker学习
2009-09-16 19:29 1979关于FreeMarker 的基础学习请参考文档。。这里主要 ... -
spring/struts2 整合(转载)
2009-07-31 16:00 920在Struts2中整合Spring的IoC ... -
Java开发,重在整合-----Struts 2整合Spring
2009-07-31 15:55 184413.2 Struts 2整合Spring Str ... -
Struts2.1.6与spring2.5.5集成
2009-07-29 17:00 1502把struts2-spring-plugin-2.1.6.ja ... -
基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (3)
2009-07-29 16:46 1613进入我们基于Annotation的Struts2.0+H ... -
基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (2)
2009-07-29 16:42 1393基于Annotation的SSH整合开发,其实,并没有我 ... -
基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (1)
2009-07-29 16:37 1312写这个主题的文章在 ... -
Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架 整合开发
2009-07-29 16:29 2030来自:http://www.cnitblog.com/intr ... -
Struts2.1.x+Spring2.5.x+Hibernate3.2.x实例教程
2009-07-29 12:07 1767、最简单的SSH程序 概要 本文将完成最常见的login功能 ... -
Struts2.1.6测试小记
2009-07-29 11:53 954Struts2.1.x终于推出正式版了,迫不急待地下了试试(读 ... -
集成struts2 spring hibernate,使用注解
2009-07-29 01:03 2131转载自:http://www.iteye.com/topic/ ...
相关推荐
本示例中的“JPA多对多Demo”是一个具体的实践案例,展示了如何在JPA中实现多对多关联关系,以及对应的增删改查方法。 多对多关联是现实世界中常见的一种关系类型,例如教师和学生之间的关系,一个教师可以教多个...
在实际的查询方法中,我们通常会定义一个继承自`JpaRepository`的接口,并且在这个接口中声明一个带有`Pageable`参数的方法,例如`Page<VideoCategory> findByCondition(SearchVo searchVo, Pageable pageable);...
JPA 提供了分页查询功能,可以根据需要对查询结果进行分页处理。分页查询可以使用 Pageable 对象来实现。Pageable 对象提供了分页查询的相关信息,包括当前页码、每页记录数等。 JPA 复杂查询 JPA 复杂查询可以...
现在,在Spring Boot的控制器中,我们可以处理HTTP请求,调用上面定义的查询方法并返回Thymeleaf模板。首先,创建一个`Pageable`对象以指定分页参数,然后使用`getUserSpec`创建`Specification`实例: ```java @...
Spring Data JPA是Spring框架的一个模块,它简化了Java应用程序对数据库的操作,通过提供自动的repository接口实现。在处理复杂的查询需求时,Spring Data JPA的`Specifications`接口提供了动态构建查询的能力,允许...
8. **多态性(Polymorphism)**: JPA支持继承和多态性,使得你可以定义一个基类,然后多个子类继承它并有自己的数据库表。 在"apache-openjpa-1.2.0-source"这个压缩包中,包含了Apache OpenJPA项目的源代码。Open...
本资料主要探讨的是JPA中的一对多关系以及延迟加载机制,这两部分是JPA使用中的关键概念。 **一对多关系** 在关系数据库中,一对多关系是最常见的一种关联类型。例如,一个部门可以有多名员工,而每个员工只能属于...
例如,一个学生可以属于多个班级(多对一),而一个班级可以包含多个学生(一对多)。在JPA中,我们通过在实体类上使用`@OneToMany`注解来定义这种关系。这个注解允许我们将一个实体的集合属性映射到另一个实体的...
5. **关联(Associations)**:JPA支持一对一、一对多、多对一和多对多的关系映射。使用`@OneToOne`、`@OneToMany`、`@ManyToOne`和`@ManyToMany`注解来定义实体之间的关联。 6. **继承(Inheritance)**:JPA支持...
本文将深入探讨在JPA中如何实现双向多对多的关联关系,并提供相关的示例代码。 首先,我们需要了解多对多关联关系的基本概念。在关系型数据库中,两个实体之间可能存在多对多的关系,意味着每个实例可以从一个实体...
通过上述代码,我们可以看到JPA如何优雅地处理一对多和多对多的关系,以及如何进行查询和操作。理解并熟练运用这些关系对于Java开发者来说至关重要,特别是在构建复杂的业务逻辑和数据模型时。在实践中,还需要注意...
jpa查询详解 JPA(Java Persistence API)是一种 Java 持久层 API,用于处理 Java 对象和关系数据库之间的 Mapping。JPA 查询是 JPA 中的一种重要机制,用于从数据库中检索数据。在本文中,我们将详细介绍 JPA 查询...
在Java Persistence API (JPA) 中,"单向多对一"关系是一种常见的对象关系映射(ORM)设计模式,用于表示实体之间的关联。在这个模式中,一个实体("多"端)可以引用另一个实体("一"端),但被引用的实体并不持有对...
本篇文章将探讨如何在Ibatis3中融合JPA的方法进行查询,以实现更加灵活的数据访问。 首先,理解Ibatis3的核心概念。Ibatis3的主要组成部分包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession以及Mapper...
"JPA多表复杂查询方法示例" JPA(Java Persistence API)是一种 Java 应用程序接口,用于访问、持久和管理关系数据库中的数据。在实际开发中,经常需要进行多表复杂查询,以下是JPA多表复杂查询方法示例的详细介绍...
通过定义自关联的实体类、配置JPA仓库以及编写适当的查询方法,可以轻松地实现对树形数据的CRUD操作。在实际应用中,还需考虑性能优化,如分页加载、懒加载等策略,以避免大量数据导致的效率问题。
除了基本的查询方法,`JpaRepository`还提供了其他一些高级查询功能,比如`findAll`, `findById`, `existsById`, `count`等。此外,还可以通过`Query`注解自定义更复杂的查询逻辑。 通过以上步骤,我们可以在Spring...
JPA 方法名常用查询 JPA 使用@Query注解实现JPQL和本地自定义查询 JPA API 条件查询 (子查询,多表连接查询) JPA结合QueryDSL轻松完成复杂查询(自连接,多表连接查询) 参与文档: Pro JPA2中文版:精通Java持久化API ...
JPA详解通常是对JPA的深入解析,包括实体(Entity)、持久化上下文(Persistence Context)、托管状态(Managed State)、懒加载(Lazy Loading)、级联操作(Cascading)、关系映射(Relationship Mapping)、查询...
对于多表关联查询,我们可以通过定义Repository接口并自定义查询方法来实现。 **一对一映射** 一对一映射通常用于两个实体之间存在唯一对应关系的情况。例如,`UserInfo`实体与`Address`实体的关系可能是一对一的...