当我在Model类中将变量定义为String时,它在DB中转换为'VARCHAR(255)'.
但是,我想保存超过255,因为这些数据是由几段组成的非常长的文本.
据我所知,DB中有一个TEXT类型可以保存很长的文本.
如何在Play中定义TEXT类型!框架?
我尝试在Play中定义Constraints.MaxLength和Constraints.Max!框架api.
但是,仍然1.sql文件(由Ebean DDL自动创建)将此变量定义为VARCHAR(255).
提前致谢!
如何使用@SizeMySQL DECIMAL(x,y)列的注释?
我正在使用BigDecimal,但是当我尝试包含@Size max它时它不起作用.这是我的代码:
@Size(max = 7,2)
@Column(name = "weight")
private BigDecimal weight;
Run Code Online (Sandbox Code Playgroud) 我能够将查询缓存与Spring Data JPA一起用于我的自定义查询方法,如下所示.
public interface CountryRepository extends JpaRepository<Country, String> {
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") })
Country findByCountryName(String countryName);
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") })
Country findByCountryCode(String countryCode); }
Run Code Online (Sandbox Code Playgroud)
但是,如何在现有父方法(如findAll())上添加@QueryHints?
谢谢.
我正在玩Play!框架2.0,我陷入了涉及数据库的恼人问题.
假设我有一个User(延伸Model它具有一些属性()类first_name,last_name,email,password等).
在某些时候,我想添加一个新属性,让我们说last_ip(它并不重要).所以,我将该属性添加到User类中,编译并运行.
问题是:我得到关于数据库更改的红色警报(显然),要求我按"应用更改"(如果我没记错的话).那很好但是!所有数据库记录都被删除了!
总结:我想要一个新的领域,但我不想丢失我已经添加到数据库的所有记录.这可能吗?
根据其JavaDoc,PersistenceAnnotationBeanPostProcessor似乎负责使用注释@PersistenceContext注入EntityManager.它似乎暗示如果没有在Spring应用程序上下文xml中声明这个bean,@ PerersContext注释将不起作用.
但是,根据我的实验,这不是事实.
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL" />
</persistence>
Run Code Online (Sandbox Code Playgroud)
<context:component-scan base-package="com.test.dao" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="default"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true"/>
<property name="generateDdl" value="true"/>
<property name="databasePlatform" value="org.hibernate.dialect.DerbyDialect"/>
</bean>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="url" value="jdbc:derby://localhost:1527/c:\derbydb\mydb"/>
<property name="username" value="APP"/>
<property name="password" value="APP"/>
</bean>
<tx:annotation-driven/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!--
<bean id="persistenceAnnotation" class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
-->
Run Code Online (Sandbox Code Playgroud)
@Repository("userDao")
public class UserDaoImpl …Run Code Online (Sandbox Code Playgroud) 我得到了一个奇怪的Hibernate异常,我无法解释.它告诉我,我正在使用二级缓存,但没有在哪里hibernate.cfg.xml指定二级缓存.这是例外:
org.hibernate.cache.NoCacheRegionFactoryAvailableException: Second-level cache is used in the
application, but property hibernate.cache.region.factory_class is not given, please either
disable second level cache or set correct region factory class name to property
hibernate.cache.region.factory_class (and make sure the second level cache provider,
hibernate-infinispan, for example, is available in the classpath).
at org.hibernate.cache.internal.NoCachingRegionFactory.buildEntityRegion(NoCachingRegionFactory.java:69)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:348)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1769)
at net.me.myapp.common.dao.SessionFactoryProvider.newSessionFactory(SessionFactoryProvider.java:37)
at net.me.myapp.common.dao.BaseDAO.doPersist(BaseDAO.java:28)
at net.me.myapp.common.dao.WordDAO.deleteAllWords(WordDAO.java:36)
at net.me.myapp.tools.dmapper.DictionaryMapper.run(DictionaryMapper.java:88)
at net.me.myapp.tools.dmapper.DictionaryMapper.main(DictionaryMapper.java:56)
Run Code Online (Sandbox Code Playgroud)
我的hibernate.cfg.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration> …Run Code Online (Sandbox Code Playgroud) 起初我已经预料到,CascadeType.REMOVE我将能够删除表中的外键,但我有一个例外.但是@CascadeOnDelete没关系.两个注释之间有什么区别?
编辑:我已经看到了DataNucleus的评论.关于删除的过程来自org.eclipse.persistence.annotations.CascadeOnDelete.Which提出了一个问题,如何使用好主意.
我和Hibernate社区中发布的人有相同的问题:FetchProfiles.
出于性能原因,我在数据模型中有如下关系:
...C -[FetchType.LAZY]-> D -> [FetchType.LAZY] -> E
Run Code Online (Sandbox Code Playgroud)
使用FetchProfile我热切负荷d与C,但我无法弄清楚如何急切地加载E.我知道我可以使用内部连接成功使用一个NamedQuery,但它真正的错误我,我不能工作了怎么办它使用FetchProfile.尝试FetchProfile的一个例子(在时间的迷雾中丢失了任何其他东西):
@FetchProfile(name = "cwithDAndE", fetchOverrides = {
@FetchProfile.FetchOverride(entity = C.class, association = "dByCId", mode = FetchMode.JOIN),
@FetchProfile.FetchOverride(entity = D.class, association = "eByDId", mode = FetchMode.JOIN)
})
Run Code Online (Sandbox Code Playgroud)
我为会话启用了FetchProfile并成功使用了session.get而没有错误,并且填充了C和D - E仍然是懒惰且未填充的.无奈之下,我记得从C向下尝试点关联.我只能找到深度为1的示例.
据我所知,这是一个需要填充的OCD类型差距!
在此先感谢您的帮助.
我是Spring的新手,我正在尝试使用以下堆栈创建一个webapp:Apache Tomcat 7,MySQL,Spring MVC,带有JPA注释的Hibernate 3.
我正试图通过遵循Craig Walls的"Spring in Action,第三版"一书来学习.
首先,我想创建一个页面,显示我手动添加到我的数据库中的一些条目,但看起来我的应用程序无法从SessionFactory创建/检索任何Hibernate会话.这是我的根本原因堆栈跟踪:
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63)
org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:687)
com.nbarraille.www.dao.HibernateContactDAO.listContact(HibernateContactDAO.java:27)
com.nbarraille.www.controllers.HomeController.showHomePage(HomeController.java:24)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:613)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Run Code Online (Sandbox Code Playgroud)
这是我关心的Classes/Config文件:
我的HibernateDAO:
@Repository
public …Run Code Online (Sandbox Code Playgroud) 我试图在eclipse中使用Jaxb类生成器从我的模式生成jaxb类.我收到以下错误:
"此项目的类路径似乎不包含继续生成类所需的库.请确保类路径上有JAXB实现."
我怎么解决这个问题?