Tag: 实体

在持久化Hibernate之前自动设置bean值(列)?

在Hibernate持久化实体之前,是否有一种优雅的方法来设置bean值(列)? 基本上我有一个名为“modification_date”的字段。 它出现在一堆实体上。 每当更新/修改其中一个实体时,我基本上都喜欢自动设置该字段。 我可以在服务层编写代码,每次手动保存/更新对象时设置日期… 我也有一个Dao图层。 每个Dao都从包含save()方法的支持类扩展而来。 我可以使用reflection并在此方法中设置值。 我可以检查该类是否有一个名为“modicationDate”的字段,如果是,则将其设置为新的Date()。 有比这更好的方法吗? 或者使用我的genericssave()方法是最好的方法? 这是我想要强大的东西,而不必再担心它。 我会很高兴知道通过简单地制作一个“modificationDate”属性,从这一点开始我将自动处理这个问题。 使用save()方法似乎是最好的地方,但如果有更好的方法,我想知道它。

如何强制javax xslt转换器使用utf-8编码国家字符而不是html实体?

我正在研究filter,它应该使用一些样式表来转换输出。 代码的重要部分如下所示: PrintWriter out = response.getWriter(); … StringReader sr = new StringReader(content); Source xmlSource = new StreamSource(sr, requestSystemId); transformer.setOutputProperty(OutputKeys.ENCODING, “UTF-8”); transformer.setParameter(“encoding”, “UTF-8”); //same result when using ByteArrayOutputStream xo = new java.io.ByteArrayOutputStream(); StringWriter xo = new StringWriter(); StreamResult result = new StreamResult(xo); transformer.transform(xmlSource, result); out.write(xo.toString()); 问题是国家字符被编码为html实体而不是使用UTF。 有没有办法强制变压器使用UTF-8而不是实体?

使用dao接口和实现实现Generic Abstract Entity类

嘿我想有通用模型/实体类,可以从db下载类型为long元素的id。 方法是这样的: public class GenericModel { @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long id; public static GenericModel getBy(Long id) { return JPA.em().find(GenericModel.class, id); } } 但是在子模型类中扩展的Generic模型中,我必须动态声明要在db中查找的实体类名。 我想有通用实体类,我将有常见的方法,如getById()。 该generics类将由concret实体类扩展。 我不必在每个模型类中编写相同的方法,因为它将inheritance自generics类 – 我怎么能得到这个? 这是我的DAO界面。 我不太确定: public interface GenericModelDao { public void add(T entityClass); public void update(T entityClass); public void delete(long id); public T get(long id); public List get(); […]

是否允许JPA实体中的方法抛出exception?

我有一个@Entity的问题我试图创建。 当尝试使用OpenJPA实现在Eclipse中测试类时会出现问题(我没有尝试过其他人,所以不确定它是否适用于它们)。 我的测试用例很简单,因为它创建了一个EntityManagerFactory(它会自动在我的类路径中找到persistence.xml),然后它尝试从工厂创建一个EntityManager。 这是我遇到一个非常模糊的’PersistenceException:null’错误。 有问题的实体是以下LogError类。 我把它剥离到最低限度,它仍然会抛出错误。 @Entity @Table(name = “T_LOG_ERROR”) public class LogError { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long ID; private String ERROR; protected LogError() {} public String getErrorName() throws FieldNullException { if (this.ERROR == null) throw new FieldNullException(“error was null”, null); return this.ERROR; } public setError(SystemError error) { this.ERROR = error.getClass().getCanonicalName(); } } […]

JPA @MappedSuperclass在Eclipse中的单独JAR中

我有一个@MappedSuperclass AbstractEntity,我用于所有@Entity类。 只要超类与我的实体在同一个Eclipse项目中,它就可以完美地工作。 但是因为我在几个项目中重用了这个超类,所以我只想把它分解成自己的JAR文件。 当我这样做(当然我将JAR文件添加到构建路径中)时,Eclipse会在每个@Entity类上给出错误: 实体没有定义主键属性。 Eclipse突出显示@Entity注释作为错误的来源。 当然,所有类都inheritance自此AbstractEntity。 两个项目中的包名称相同。 JAR项目具有所有必需的构建路径 – 包含AbstractEntity的JAR文件项目中没有错误。 当我将它部署到我的应用服务器(JBoss 7.1)时,它工作正常。 这让我觉得它只是一个Eclipse问题,它错误地识别错误。 抽象实体: package com.xyc.abc; import java.io.Serializable; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuperclass; @MappedSuperclass public abstract class AbstractEntity implements Serializable { private static final long serialVersionUID = 1L; private Long id; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long getId() { return […]

org.hibernate.AnnotationException:referencedColumnNames引用未映射到单个属性

我在2个实体之间映射一对一时遇到了以下exception。 第一个实体嵌入了复合键。 第二个实体也有嵌入式复合键。 这些表是遗留系统的一部分。 数据持平,关系定义不明确。 请帮忙。 Caused by: org.hibernate.AnnotationException: referencedColumnNames(FLAG_NAME) of net.javabeat.spring.model.ReferralsM.mnEditFlag referencing net.javabeat.spring.model.MnEditFlag not mapped to a single property at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:205) at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:116) at org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1515) at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1440) at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1358) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1727) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1778) at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:247) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:373) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:358) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509) … 34 more 这是我在主/父表中的一对一映射。 @OneToOne(targetEntity = MnEditFlag.class, fetch = FetchType.LAZY) @JoinColumn(name […]

如何在Netbeans中使用Eclipse-Link JPA应用静态编织Ant任务?

我使用的是Netbeans 7.1.1和Glassfish 3.1.2服务器。 作为JPA提供商,我决定使用随Netbeans一起提供的eclipse-link 2.3.0。 由于我想使用延迟抓取,我的项目由大约45个JPA实体类组成,它们之间有很多关系,所以我决定使用静态编织 。 此外,@ Entity类位于单独的Class Lib项目中,而persistence.xml驻留在EJB项目中。 我已按照此处的说明操作: http : //wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving 我将ant-task放入build-impl.xml文件(如下)。 使用Netbeans时这是正确的吗? 这是build-impl.xml的片段: pathelement路径中的所有jar文件也作为库包含在Netbeans IDE中。 点击“清理和构建”时,我现在收到以下错误: D:\workspace\MyProject\nbproject\build-impl.xml:703: taskdef class org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask cannot be found using the classloader AntClassLoader[] 我在这里弄错了什么?

自动增量不适用于具有复合键的Entity类

我希望我的一个复合键元素自动递增,我使用嵌入式键作为我的实体类,因此我无法使用生成值注释来解决问题,因为使用@Embeddable或@EmbeddedId时忽略了@GeneratedValue注释@EmbeddedId 。

JPA,从实体到数据库模式开始

使用JPA时哪个更好,特别是在启动新项目时? 从设计实体开始,然后让JPA生成数据库或者从数据库模式开始,让工具生成实体类? 我是一家小公司的一部分。 我是软件开发人员和DBA。 我有完全的应用程序和数据库设计自由 我刚刚开始这个项目

每个“容器”类一个DAO或每个表一个DAO?

我有一个’容器’类,其中的字段包含在几个数据库表中,我使用DAO模式来访问数据。 问题是,我应该为这个“容器”类创建一个DAO,还是每个表有一个DAO并合并它们的数据更好?