Tag: hibernate

Hibernate:Where insertable = false,updatable = false属于涉及外键的复合主键星座?

在Hibernate或其他ORM中实现复合主键时,在使用标识关系的复合主键星座(FK是PK的一部分)中,最多有三处将insertable = false,updatable = false: 进入复合PK类的@Column注解(@Embeddable类)或 进入实体类的关联@ContactColumn / s注释或 进入实体类的冗余 PK属性的@Column注解(仅限于@IdClass类) 第三个是使用@IdClass和JPA 1.0 AFAIK的唯一方法。 见http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Primary_Keys_through_OneToOne_Relationships 。 我会考虑只有案件1和2。 问:一般来说,将“insertable = false,updatable = false”放在哪个位置是最好的select? 关于这个问题,我遇到了Hibernate的问题。 例如,Hibernate 3.5.x会抱怨Zips表 CREATE TABLE Zips ( country_code CHAR(2), code VARCHAR(10), PRIMARY KEY (country_code, code), FOREIGN KEY (country_code) REFERENCES Countries (iso_code) ) 有: org.hibernate.MappingException: Repeated column in mapping for entity: com.kawoolutions.bbstats.model.Zip column: country_code […]

JPA最快的方式来在持久性期间忽略一个字段?

我基本上正在寻找一个“@Ignore”types的注释,我可以阻止一个特定的领域被持久化。 这怎么能实现?

configurationHibernate通过JNDI数据源连接到数据库

大家好我使用Hibernate + Struts2 + Tomcat6 + Mysql作为我的J2EE框架。 我一直在使用hibernate的内置连接池机制,但事实certificate,在8小时之后,mysqlclosures它的连接时,会出现问题。 无论如何,我search了一下,发现我应该通过JNDI数据源获得我的连接,但我无法达成一个好的和完整的教程。 我应该采取什么措施来做到这一点? 请给我足够的细节,我有点新。 这里是我的hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url"> jdbc:mysql://localhost/hposg?characterEncoding=UTF-8 </property> <property name="connection.username">root</property> <property name="connection.password"></property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="current_session_context_class">thread</property> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <property name="hbm2ddl.auto">update</property> <property name="hibernate.max_fetch_depth">3</property> <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.idle_test_period">300</property> <property name="hibernate.c3p0.timeout">1800</property> […]

无法序列化HibernateProxy的对象原因

我收到来自服务器的以下错误响应。 HTTP状态500 – 键入例外报告 信息 描述服务器遇到一个内部错误(),阻止它履行这个请求。 例外 javax.servlet.ServletException:java.lang.UnsupportedOperationException:试图序列化java.lang.Class:org.hibernate.proxy.HibernateProxy。 忘了注册一个types适配器? 根本原因 java.lang.UnsupportedOperationException:试图序列化java.lang.Class:org.hibernate.proxy.HibernateProxy。 忘了注册一个types适配器? 从Javadebugging器: org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer@7632012e 我正在使用Gson将我的Java对象转换为JSON。 下面我粘贴了一些我的代码。 这是我的资源: @Stateless @LocalBean @Path("/autos") @Produces(MediaType.APPLICATION_JSON) public class AutoResource { @EJB private CarAssembler warehouse; @Context private UriInfo uriInfo; @GET public Response allAutos() { // Building a context, lots of code… // Creating a Gson instance and configures it… final Auto […]

JPA“@JoinTable”注释

在这种情况下,你使用JPA @JoinTable注解吗?

Java是否有使用声明?

Java有一个使用语句,可以在hibernate打开会话时使用? 在C#中,它是这样的: using (var session = new Session()) { } 所以对象超出范围并自动closures。

JPQL构造函数expression式 – org.hibernate.hql.ast.QuerySyntaxException:表未映射

我原来的问题是https://stackoverflow.com/questions/12172614/hql-join-without-foreign-key-reference,但无法find任何解决scheme,因此前进使用JPA本地查询。 entityManager的createNativeQuery返回Query对象,然后返回List<Object[]> 。 我不想在迭代列表时处理索引,因为它本质上是错误的。因此,我查看了一些其他的解决scheme,并发现JPQL的构造器expression式作为解决scheme之一。 表结构是 Schema1 -TableA – NameColumn – PhoneColumn 对应的Java类是 public class PersonSearch implements Serializable { public PersonSearch (String NameColumn, String PhoneColumn) { this.name = NameColumn; this.phone = PhoneColumn; } private String name; private String phone; public String getName() { return name; } public void setName(String name) { this.name = name; } public […]

Hibernate / JPA – 注释bean方法vs字段

我有一个关于Hibernate使用的简单问题。 我一直使用JPA注释中的一种方法来注释一个类的字段,并在相应的bean上注释get方法。 我的问题如下:注解字段和bean方法与JPA annoations(如@Id)之间有区别。 例: @Entity public class User { **@ID** private int id; public int getId(){ return this.id; } public void setId(int id){ this.id=id; } } – – – – – -要么 – – – – – – @Entity public class User { private int id; **@ID** public int getId(){ return this.id; } public […]

需要重置Oracle中序列的值

我正在使用Spring和Hibernate来开发Java应用程序。 假设我有一张桌子。 当我从这个表中删除一些logging时,有时我需要重置主键字段的值。 假设我有一个表中有10条logging,我删除了最后5条logging。 现在,当我插入新logging时,主键字段的值应该从6开始,但是从11开始。 如果我需要在MySql中以6 ( maximum +1 )启动主键值,那么我只需要执行下面的SQL语句。 alter table table_name auto_increment=1; 这会自动将auto_increment的值重置为该字段的maximum + 1值(可能在概念上不正确,但是可行)。 在Oracle(10g)中,我使用主键sequence 。 当Oracle从数据库中删除一些logging时,是否有办法将sequence的值重置为maximum + 1值?

Java / Hibernate – 在只读模式下不允许写操作

最近我一直有一个恼人的例外,经过对Google和这个论坛的一些研究,我还没有find可以解决我的问题的答案。 这是事情 – 有时,当试图更新或创build一个新的对象与hibernate时,我得到以下错误: org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition. at org.springframework.orm.hibernate3.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1186) at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:696) at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419) at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:694) 真奇怪的是,有时用方法getHibernateTemplate().saveOrUpdate(object);更新getHibernateTemplate().saveOrUpdate(object); 它会工作,但有时与相同的对象,通过调用相同的方法,它不起作用,但它似乎取决于我如何获得对象的第一位。 例如:假设我有一个包含3个字段的表:id,type,length。 可能发生的是,如果我通过id获得对象并更新长度,那么它将工作。 如果我通过types得到它并更新长度,那么它将不起作用。 所以,为了避免这个问题,我一直在做的事情是把这个方法拿回来,而这个方法以后不会引起问题,但是现在变得越来越讨厌,试图find一种可行的方法。 此外,现在我试图创build一个对象(但不是所有的,只是在一个特定的表),这个exception,并找不到解决方法。 我试图在事务中添加@Transactional(readOnly = false) ,但是没有任何改变,显示模式是说我不是只读的。 有什么build议么? 7月26日编辑:这里有一些与hibernate相关的configuration <property name="hibernateProperties"> <props> <prop key="jdbc.fetch_size">20</prop> <prop […]