Tag: jpa

用于MATLAB的Java JPA类

我在Windows XP Pro SP3上使用MATLAB R2007b,Java 1.6 SE,Eclipse Helios和MySql 5。 我试图创build一个使用JPA注释来访问MySql 5数据库的类库。 这个想法是,MATLAB脚本实例化这些Java对象,这些对象提供了访问数据库的API。 我可以创build我在Eclipse中工作的注释类(即JUnittesting)。 我可以将代码导出到jar,我可以从命令提示符运行。 我使用javaaddpath()更新MATLAB Java类path。 我可以在MATLAB中实例化我的类。 但是,当我调用我的init(),调用javax.persistence.Persistence.createEntityManagerFactory(),我得到了可怕的 “没有EntityManager的持久性提供者” 这个错误通常意味着persistence.xml文件不在正确的位置。 但是这一定是因为我的jar是从命令行工作的。 将META-INF文件夹添加到MATLAB java类path没有帮助。 也不提取jar并将提取的文件夹结构添加到classpath,无论是否添加了META-INF。 有没有人有任何想法,坚果或不? 有没有人曾经在任何版本的MATLAB中做过这个。 谢谢。 -reilly。

注释过滤@OneToMany关联的结果

我有两个表之间的父/子关系,以及我的Java类中的相应映射。 表格大概是这样的: A (ref number, stuff varchar2(4000)) B (a_ref number, other number, foo varchar2(200)) 和Java代码: @Entity class A { @Id @Column(name = "REF") private int ref; @OneToMany @JoinColumn(name = "A_REF", referencedName = "REF") private Set<B> bs; } @Entity class B { @Id @Column(name = "A_REF") private int aRef; @Id @Column(name = "OTHER") private int other; […]

@PreUpdate和@Prepersist在hibernate/ JPA(使用会话)

我已经打了一个阻滞剂,添加一个修复现有的项目。主要的问题是,我想在POJO使用@Prepersist和@PreUpdate来照顾LastModified字段(插入和更新)使用JPA的hibernate实现会话。 原因? :这个改变是必须的,因为需要使用liquibase 1.9.5 ,我知道(因为我之前遇到过这种情况),liquibase将timestamp转换为datetime与默认的current_timestamp,这对于mysql数据库来说太糟糕了。 所以我需要一种方法来在代码中而不是在数据库中设置此集,以便我可以安全地将时间戳字段更改为datetime.then liquibase很高兴,我很高兴。 现在看来,这些解释器没有被执行,很less有search,我发现它适合使用entityManager 。目前没有问题。所以我想知道是否有一个简单的方法来解决我的问题,这意味着有@Prepersist或@PreUpdate甚至是其他解决方法来设置仍使用会话的lastModified字段

如何将inheritance策略与JPA注释和Hibernate混合?

根据Hibernate参考文档 ,在使用Hibernate的XML-Metadata时,应该可以混合使用不同的inheritance映射策略: http://docs.jboss.org/hibernate/stable/core/reference/en/html/inheritance.html#inheritance-mixing-tableperclass-tablepersubclass 但是,“ Hibernate注解参考指南”的相应部分并不包括: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#d0e1168 另一方面,JavaDocsbuild议混合inheritance策略应该是可能的。 例如在javax.persistence.DiscriminatorColumn中它说: 策略和鉴别器列仅在应用不同inheritance策略的实体类层次结构或子层次结构的根目录中指定。 以下是我试图实现的映射的一个示例。 我想在层次结构的根目录附近使用table-per-subclass映射,但是在树叶附近改变为table-per-class-hierarchy映射。 以下是一些示例代码: @Entity @Inheritance( strategy = InheritanceType.JOINED ) public abstract class A implements Serializable { @Id private String id; // other mapped properties… } @Entity @Inheritance( strategy = InheritanceType.SINGLE_TABLE ) public class BB extends A { // other mapped properties and associations… } @Entity public […]

类似JPQL语句中的参数

我正在尝试用类似的子句写一个JPQL查询: LIKE '%:code%' 我想有代码= 4,并find 455 554 646 … 我无法通过:code = '%value%' namedQuery.setParameter("%" + this.value + "%"); 因为在另一个地方我需要:value没有包裹的%字符。 任何帮助?

如何在JPAconfiguration中设置默认模式名称?

我发现在hibernateconfiguration文件中我们可以设置参数hibernate.default_schema : <hibernate-configuration> <session-factory> … <property name="hibernate.default_schema">myschema</property> … </session-factory> </hibernate-configuration> 现在我正在使用JPA,我也想这样做。 否则,我必须添加参数schema到每个@Table注释,如: @Entity @Table (name = "projectcategory", schema = "SCHEMANAME") public class Category implements Serializable { … } 据我所知这个参数应该在这部分configuration的某个地方: <bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitName" value="JiraManager"/> <property name="dataSource" ref="domainDataSource"/> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="generateDdl" value="false"/> <property name="showSql" value="false"/> <property name="databasePlatform" value="${hibernate.dialect}"/> </bean> </property> </bean> <bean […]

如何使用JPA和Hibernate解决LazyInitializationException

我正在为想要使用延迟初始化的客户开发一个项目。 当使用默认的延迟加载模式映射类时,他们总是会得到“懒惰的初始化exception”。 @JoinTable(name = "join_profilo_funzionalita", joinColumns = {@JoinColumn(name = "profilo_id", referencedColumnName = "profilo_id")}, inverseJoinColumns = {@JoinColumn(name = "funzionalita_id", referencedColumnName = "funzionalita_id")}) //@ManyToMany(fetch=FetchType.EAGER) – no exceptions if uncommented @ManyToMany private Collection<Funzionalita> funzionalitaIdCollection; 有没有使用JPA类的标准模式来避免这个错误? 片段欢迎,非常感谢您的时间。

何时,为什么JPA实体应该实现Serializable接口?

问题在于标题。 下面我刚刚介绍了一些我的想法和发现。 当我有非常简单的域模型(3表没有任何关系),我所有的实体没有实现Serializable。 但是,当域模型变得更复杂时,我得到了RuntimeException,它说我的一个实体没有实现Serializable。 我使用Hibernate作为JPA实现。 我在想: 它是供应商特定的要求/行为吗? 我的序列化实体会发生什么? 它们应该是可序列化的用于存储还是转移? 在哪一刻,有必要让我的实体可序列化?

hibernate – @ElementCollection – 奇怪的删除/插入行为

@Entity public class Person { @ElementCollection @CollectionTable(name = "PERSON_LOCATIONS", joinColumns = @JoinColumn(name = "PERSON_ID")) private List<Location> locations; […] } @Embeddable public class Location { […] } 鉴于以下类结构,当我尝试将新位置添加到人员位置列表时,总是会导致以下SQL查询: DELETE FROM PERSON_LOCATIONS WHERE PERSON_ID = :idOfPerson 和 A lotsa' inserts into the PERSON_LOCATIONS table Hibernate(3.5.x / JPA 2)删除给定Person的所有关联logging,并重新插入所有以前的logging,加上新的logging。 我有这样的想法,位置上的equals / hashcode方法将解决问题,但它并没有改变任何东西。 任何提示都表示赞赏!

我如何获得会话对象,如果我有entitymanager

我有 private EntityManager em; public List getAll(DetachedCriteria detachedCriteria) { return detachedCriteria.getExecutableCriteria( ??? ).list(); } 如何使用entitymanager检索会话,或者如何从detachedcriteria中获取结果?