Tag: jpa

Hibernate本机查询:无效的列名错误SQL-17006

package com.abc.def.model; import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.Entity; import javax.persistence.Embeddable; import javax.persistence.IdClass; import java.util.Date; import java.io.Serializable; @NamedNativeQuery(name=”getMetadata”,query=” select a.name alias1,a.fullname alias2, b.name alias3,b.age alias4, c.height alias5,c.something alias6, d.otherthing alias7 from lame_table_name a, lame_table_name_2 b where a.id = b.id and b.id = c.id and c.id = d.id and d.id = :namedparameter order by a.index,b.index “, resultClass=MetadataModel.class) […]

如何在Spring Boot中使用Hibernate / JPA返回多级json

我有一个Postgres数据库,有4个表父母,子女,团体和Group_Membership。 群组可以有多个父母,父母可以有多个群组。 父母可以有多个孩子,但孩子只能有一个孩子。 这是架构的愚蠢版本。 我正在使用Spring Boot和Hibernate JPA。 Parent.java @Entity @Table(name = “parents”) public class Parent { @Id @GeneratedValue @Column(name=”parent_id”) private Long parentId; @Column(name= “first_name”) private String firstName; @Column(name= “last_name”) private String lastName; @OneToMany(mappedBy=”parent”) private Set children; @ManyToMany(cascade = { CascadeType.ALL }) @JoinTable( name= “Group_Membership”, joinColumns = { @JoinColumn(name = “parent_id”) }, inverseJoinColumns = { @JoinColumn(name […]

JPAinheritance

嗨,我是JPA的新手,我无法理解它如何处理inheritance。 我有一个特定的问题我需要在不改变DB方案的情况下解决,但是如果你找不到解决方案,我会很感激使用不同的DB方案的解决方案建议(欢迎使用Hibernate / TopLink解决方案)。 如果我不清楚或您需要更多信息,请告诉我。 提前致谢! 我有这个数据库: TABLE Fruit Id Varchar (10) Primary Key size Varchar (10) fruit_type Varchar(10) TABLE Apple Id Varchar (10) Primary Key Foreign Key references Fruit.Id Apple_Property Varchar(10) 到目前为止我的实体看起来像这样: @Entity @Inheritance(strategy=InheritanceType.JOINED) @DiscriminatorColumn(name=”fruit_type”, discriminatorType=DiscriminatorType.Char) @DiscriminatorValue(value=”fruit”) public class Fruit implements Serializable { @Id protected String Id; protected String size; } @Entity @DiscriminatorValue(value=”apple”) //@PrimaryKeyJoinColumn(name=”Id” […]

基本hibernate选择所有语法

我试图用hibernate从我的数据库中检索数据,但它不断抛出exception 2012-11-11 11:35:45,943 [main] ERROR com.storage.hibernate.DatabaseAccessRequestsImpl – 出现错误javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法执行查询 @Override public List requestPeriod() { List trades = null; EntityManager manager = emf.createEntityManager(); Query query = manager.createQuery(“from trade”); try{ trades = query.getResultList(); } catch(PersistenceException e){ logger.error(“there was an error ” + e); } catch(SQLGrammarException e){ logger.error(“there was an error ” + e); } return trades; } 我猜测我使用的语法select […]

JPA:如何对实体中的Set字段进行排序?

我使用的是Spring 3.2.11.RELEASE,Hibernate 4.3.6.Final和JPA 2.1。 我有以下实体与以下字段… @Entity @Table(name = “user”) public class User implements Serializable, Comparable { … @ManyToMany @JoinTable(name = “user_organization”, joinColumns = { @JoinColumn(name = “USER_ID”) }, inverseJoinColumns = { @JoinColumn(name = “ORGANIZATION_ID”) }) @LazyCollection(LazyCollectionOption.FALSE) @SortNatural private SortedSet organizations; 上面,组织的排序由组织的名称字段完成。 当我运行JPA查询来检索User对象时,我想基于与它们关联的组织的有序列表进行排序。 我试过这个…… final CriteriaBuilder builder = m_entityManager.getCriteriaBuilder(); final CriteriaQuery criteria = builder.createQuery(User.class); … final […]

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 […]

MariaDB Dynamic Columns集成在Java中

我正在研究有关将MariaDB动态列概念与Java集成的概念certificate。 所以问题是列将在BLOB中,数据将存储在键值对中。 目前,当从数据库返回byte []时,没有任何JSON对象格式或任何分隔符。 因此很难解析数据并找到密钥的值。 这可以使用Java中的Native查询来完成。 但是如何使用JPA / Hibernate检索数据还是支持动态列? 提前致谢。

为什么我的JPA注释类没有隐式发现?

我的persistence.xml看起来像: org.hibernate.ejb.HibernatePersistence com.XXX.Abc .. 一切正常。 当我删除指令时,我从EntityManager.find(Abc.class, 1)得到一个exception: java.lang.IllegalArgumentException: Unknown entity: com.XXX.Abc 看起来hibernate无法发现我的注释类,虽然我正在使用@Entity ..为什么?

使用JodaTime Instant进行Hibernate版本控制

使用java.time.Instant和Hibernate一起工作(我使用的是hibernate-java8 , 这里给出了更多的解决方案)。 使用它作为@Version是一个问题。 我正在使用Hibernate 5.1.7.Final(传统和JPA的混合)注释。 我的实体使用版本 @javax.persistence.Version @javax.persistence.Column( columnDefinition=”TIMESTAMP(3) DEFAULT ‘2016-01-01′”) private Instant mytimestamp; MySQL解释为 `mytimestamp` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) 这太疯狂了,但不是我的观点。 我想知道Hibernate如何分配mytimestamp ,如果我可以改变方式并且我可以检索该值。 看起来所有三个答案都是“不”。 Hibernate不分配mytimestamp ; 它由MySQL分配ON UPDATE 。 这不适用于不支持此hack的数据库。 我想知道这是故意还是偶然的。 所以我添加@org.hibernate.annotations.Source(SourceType.VM)只是为了发现版本生成使用TimestampType.seed(SessionImplementor session)返回新的java.sql.Timestamp ,它不能分配给一个字段输入Instant 。 使用SourceType.DB ,我得到DbTimestampType ,它是TimestampType的子类,导致相同的exception。 我没有看到如何在没有额外查询的情况下检索时间戳。 所以我的问题: 我可以让Hibernate分配Instant mytimestamp吗? 或者我可以让它调用我的代码,所以我可以自己分配它?

扩展实体

我有一个名为AbstractEntity的类,它使用@MappedSuperclass注释。 然后我有一个名为User(@Entity)的类,它扩展了AbstractEntity。 这两个都存在于名为foo.bar.framework的包中。 当我使用这两个类时,一切正常。 但是现在我已经将包含这些文件的jar导入到另一个项目中。 我想重用User类并使用一些额外的字段来扩展它。 我认为@Entity public class User extends foo.bar.framework.User会做的伎俩,但我发现User的这个实现只inheritance了AbstractEntity中的字段,但没有来自foo.bar.framework.User。 问题是,如何让我的第二个User类inheritance第一个User实体类中的所有字段? User类实现都具有使用@Table(name =“name”)定义的不同表名。 我的课程看起来像这样 package foo.bar.framework; @MappedSuperclass abstract public class AbstractEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) protected Long id; @Column(nullable = false) @Version protected Long consistencyVersion; … } package foo.bar.framework; @MappedSuperclass abstract public class AbstractEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) protected Long id; […]