我的Java bean有一个childCount属性.此属性未映射到数据库列.相反,它应该由数据库计算,其COUNT()函数是在我的Java bean及其子代的连接上运行的.如果这个属性可以按需计算/"懒惰"会更好,但这不是强制性的.
在最糟糕的情况下,我可以使用HQL或Criteria API设置此bean的属性,但我不愿意.
Hibernate @Formula注释可能会有所帮助,但我几乎找不到任何文档.
任何帮助非常感谢.谢谢.
使用XML配置的Spring bean工厂,我可以使用不同的参数轻松实例化同一个类的多个实例.我怎么能用注释做同样的事情?我想要这样的东西:
@Component(firstName="joe", lastName="smith")
@Component(firstName="mary", lastName="Williams")
public class Person { /* blah blah */ }
Run Code Online (Sandbox Code Playgroud) 我的数据模型由学校和学生组成.学生有FK到他们所属的学校.我不明白为什么集合包含重复项,即Joe,Joe,Mary,Mary,Tom,Tom等.Hibernate生成的SQL查询是正确的,不会返回重复项.我可以实现一个黑客来过滤重复项,但我还没准备好与破窗户一起生活;)我试图粘贴下面的相关代码片段.任何帮助非常感谢!
// SchoolJpa
@OneToMany (
mappedBy = "school",
targetEntity = StudentJpa.class,
fetch = FetchType.LAZY,
cascade = CascadeType.ALL
)
@Override
public List<Student> getStudentsInternal() {
return super.getStudentsInternal();
}
// SchoolImpl
private List<Student> students = new ArrayList<Student>();
public List<Student> getStudents() {
return Collections.unmodifiableList(students);
}
public List<Student> getStudentsInternal() {
return students;
}
public void setStudentsInternal(List<Students> students) {
this.students = students;
}
Run Code Online (Sandbox Code Playgroud) i18n和Spring 3 mvc命名空间的问题
在使用Spring的mvc命名空间时,我还没弄清楚如何解析消息.
例如,具有以下行的JSP:
<fmt:message key="welcome.title"/>
Run Code Online (Sandbox Code Playgroud)
说明:
???welcome.title???
Run Code Online (Sandbox Code Playgroud)
我在WEB-INF下有一个带有messages.properties的消息目录.
这是web-servlet.xml(我的调度程序servlet名为web).任何帮助非常感谢.
<!-- Scans for @Controllers to deploy as beans -->
<context:component-scan base-package="com.mylittlecompany.web.controllers" />
<!-- Enable annotation driven controllers, validation etc... -->
<mvc:annotation-driven />
<!-- Configures Handler Interceptors -->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>
<!-- Application Message Bundle -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages/messages" />
<property name="cacheSeconds" value="1" />
</bean>
<!-- Saves a locale change using a cookie -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
<!-- Resolves view names to protected .jsp …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring和JUnit测试我的Hibernate DAO.
我希望每个测试方法都以预先填充的DB开始,即Java对象已经保存在DB中,已经提交的Hibernate事务中.我怎样才能做到这一点?
使用@After和@Before,方法在与@Test和@Transactional装饰的方法相同的Hibernate事务中执行(在实际测试方法启动时,第一级缓存可能不会刷新).@BeforeTransaction和@AfterTransaction显然无法与Hibernate一起使用,因为除了@ Before/AfterTransaction之外,即使使用@Transactional注释方法,它们也不会创建事务.
有什么建议吗?