我问的问题非常简单,但似乎不可能找到答案。我正在使用Spring Data JPA,我有一个JDBC/JPADataSource
(这是PostgreSQL,但这不重要),它预加载了数据,我只是试图从中读取。
我如何构造我的POJO,这样我就可以有一个< code >列表
@Entity
@Table(name = "pojo", schema = "pojoschema")
public class POJO {
@Id
@Column(name = "id", columnDefinition = "uuid")
private String id;
@Column(name = "a_string", columnDefinition = "text")
private String aString;
@Column(name = "strings", columnDefinition = "text[]")
@ElementCollection
private List<String> strings;
// getters/setters
}
这样做,我得到了一个org.postgresql.util.PSQLEx
为什么hibernate认为我想要的< code>String
在另一个表中?我如何修复这种行为?我只是尝试将PostgreSQL text[]
列映射回< code >列表
在这些情况下,方法是使用jpa的AttributeConverter
,如下所示:
@Converter
public class StringToListConverter implements AttributeConverter<List<String>, String> {
@Override
public String convertToDatabaseColumn(List<String> list) {
if(list == null) return "";
return String.join(",", list);
}
@Override
public List<String> convertToEntityAttribute(String joined) {
if(joined == null) return new ArrayList<>();
return new ArrayList<>(Arrays.asList(joined.split(",")));
}
}
并在实体字段中使用注释转换器
:
@Entity
@Table(name = "pojo", schema = "pojoschema")
public class POJO {
@Id
@Column(name = "id", columnDefinition = "uuid")
private String id;
@Column(name = "a_string", columnDefinition = "text")
private String aString;
@Column(name = "strings")
@Convert(converter = StringToListConverter.class)
private List<String> strings;
// getters/setters
}
您好,我有多对多映射,在联接表中有额外的列。表结构如下所示。 关系如下 链接 我创建了如下POJO类 Vendor.java 学生。爪哇 测试。爪哇 供应商est.java 供应商学生测试PK。爪哇 Hibernate映射文件,如下所示 vendor.hbm.xml vendor\u student\u测试。hbm。xml 大学生hbm。xml 测验hbm。xml 我刚开始Hibernate,这是
让我们假设以下关联: 添加此附加映射后,使用时,到表的左外部联接将消失 这个解决方案在我的测试用例中有一个缺点:在用repsitory.getOne(id)(Spring Data JPA)加载实体后,实体中的属性为null。 如果我只需要使用带有的投影,或者如果我只想在where子句中使用它,如果在同一个表中,有没有更好的方法避免联接?
问题内容: 我在为某些实体设置jpa映射时遇到麻烦。我有一个如下定义的父实体。 然后,我有一个带有复合键的子实体,以及此表的主键的外键,如下所示: 我知道子实体不正确,但是我不确定如何将其设置为具有复合PK。我知道我需要设置一个PK类,但是当一个字段是父类的外键时,我不确定该怎么做。一旦设置好,父级将如何引用子级实体? 任何帮助表示赞赏。 问题答案: 这受JPA 2规范的 第2.4.1节“与派生身
问题内容: 有人可以给我一个Hibernate中单向@OneToOne主键映射的示例吗?我已经尝试了多种组合,到目前为止,我得到的最好的东西是: 每当Hibernate尝试自动为上述映射生成模式时,它都会尝试将主键创建为blob(而不是long)(即PaperCheque的id类型)。有人能帮帮我吗 ?如果我无法找到确切的解决方案,那么可以采取一些措施,但我希望得到任何答复。 问题答案: 您的意图
我有一个hibernate查询,如下所示 但是这个查询不起作用 错误:连接需要路径!错误:连接需要路径!加入所需的路径!在org.hibernate.hql.internal.ast.hqlsqlwalker.createFromJoinElement(HQLSQLWalker.java:385)在org.hibernate.hql.internal.antlr.hqlsqlBaseWalker.