Tag: hibernate

Hibernate Formula Annotation – MySql函数:INTERVAL,DAY

我有代码: @Id @Column(name = “id”) @GeneratedValue private int id; @Formula(value = “(SELECT count(history.city_id) FROM history where history.ts > (now() – INTERVAL 30 DAY) and history.city_id = id)”) private int last30daysUpdates; 所以,hiberante将这个公式解析为: …where history.ts > ( now() – entitycity0_.INTERVAL 30 entitycity0_.DAY ) … 而错误是: 您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在’30 entitycity0_.DAY附近使用正确的语法 我怎么说hibernate INTERVAL和DAY是MysqL的function? 可能吗? 谢谢。

Spring Boot 1.2.5 Hibernate JPA嵌套了很多对很多关系

我有3个表如下 产品{id,title} Product_image {product_id,image_type_id,path,alt_text} Product_image_type {id,type_name} 我想要的结果对象是这样的: Product{ id, title, image_types[ { type_id, type_name, image [ { alt_text, path }, { alt_text, path } ] }, { type_id, type_name, image [ { alt_text, path } ] } ] } 我做了以下 产品类别: @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL}) @JoinTable( name = “product_image”, joinColumns = { @JoinColumn(name […]

Map的条目用于分隔Hibernate中的列

假设我有一个Players表: ID | name | email | age | … 1 | ‘bob’ | null | 23 | … 有很多列(比如50),每个列(除了ID )都可能为空。 请忽略桌面设计,现在必须保持这种方式:-( 我想将这个表映射到一个实体(即我希望它能同时用于保存和读取): public class Player implements Serializable { private Map attributes; // more code, ctor, setters, getters etc… } 其中表中的每一列都被读作地图的一个条目。 因此,在给定的示例中,地图将具有具有适当值的密钥ID , name , email等。 如果Hibernate需要,我可以和一个单独的id成员一起生活,但我想避免在一个类中有50个成员 。 这可能在Hibernate 4中吗?

hibernate SQLquery提取变量

如何从hibernate SQL查询中提取变量total,min,max并将它们分配给java变量? (select count(*) as total, min(price) as min, max(price) as max from product).addScalar(“total”, Hibernate.INTEGER).addScalar(“min”, Hibernate.INTEGER).addScalar(“max”, Hibernate.INTEGER);

Hibernate MSSQL datetime2映射

我有一个存储过程,它返回一个数据类型为datetime2的数据库,数据库为Date,Java文件为Date。 当我试图从数据库中获取时间时调用getTime()。 它返回19994321211毫秒,相当于2015年5月4日00:00:00 IST 2015.理想情况下它应该返回2015-05-04 15:21:52的毫秒,因为这是直接执行过程时数据库中显示的时间。 由于我是Hibernate的新手,我无法理解这个问题是否与hibernate映射有关或我错过了什么。 { call lsc.MLC_Get(:ABC, :XYZ, :ErrorCode)} class Mlc implements java.io.Serializable { private Integer mlcid; private Date completionTime; // getter and setter }

H2不在我的Spring Boot应用程序中创建/更新表。 我的实体出了什么问题?

我想通过使用Hibernate创建一个CRUD存储库来在H2数据库中保留一些数据。 我无法让数据库存储我的条目。 目前,我正在尝试通过制作样本条目来更新数据库期间实现这一点。 条目在日志中看起来很好,但不创建/更新/生成表。 为什么Hibernate在这种情况下无法创建表? (如果问题出在我的数据结构中) 这是我的实体, Game.java类(我试过没有@Column注释,没有区别.Id不是自动生成的,我需要每次都能输入自己的ID): @Entity @Table(name = “GAME”) public class Game { @Id @Column (name = “ID”) private long id; @Column (name = “NAME”) private String name; @Column(name = “STORYLINE”, length = 4000) private String storyline; @Column(name = “AGGREGATED_RATING”) @JsonProperty(“aggregated_rating”) private double aggregatedRating; @Column(name = “FIRST_RELEASE_DATE”) @JsonProperty(“first_release_date”) private long firstReleaseDate; @Embedded […]

Hibernate Native SQL Query在连接中检索多个实体

引用这个相关线程的答案,ehrhardt发布的技巧很好。 但是,如果我必须加入多个实体,我必须做什么? 例如: List peopleWithBooks = session.createSQLQuery( “select {p.*}, {b.*}, {m.*} from person p, book b, magazine m where “) .addEntity(“p”, Person.class) .addJoin(“b”, “p.books”) .addJoin(“m”, “p.magazines”) .addEntity(“p”, Person.class) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) .list(); Hibernate会聚合第一个连接,但不聚合第二个连接(杂志实体未分组)。 有任何技巧或只有一个相关实体加入是有限制的吗? 如果我必须加入具有子实体的实体? (我的目标是只用一个自定义查询检索所有选定的数据)

删除OneToMany关系中的实体

我无法理解从OneToMany关系中删除实体所需的最小努力。 我发现很多例子只是将实体添加到这些集合中(并且可以正常工作),但是删除实体要难得多。 我有以下课程: @Entity public class Product { … OneToMany(mappedBy=”product”, orphanRemoval=true, cascade={CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch=FetchType.EAGER) Set experts = new HashSet(); … } @Entity public class Expert { … @ManyToOne(optional=false) Product product; @ManyToOne(optional=false) Person person; … } (人与产品相似) 我充满了产品和专家。 我想从产品列表中删除专家,以便完全删除专家实体。 我希望以下代码就足够了: Product aProduct = findAProduct(…); Expert anExpert aProduct.getExperts.get(…); // Just get the first expert that I want removed EntityManager […]

无需交易即可获取数据

下面是带有spring事务的示例代码片段。 我的问题: – 是否会使用相同的会话来获取第1行和第2行的实体? 我的理解: – 我相信是的,春季交易将确保这一点 @Transactional() public void method1( //fetch entity1 from dao with the help of entity manager//line 1 // fetch entity2 from dao with the help of entity manager//line 2 // now I fetch thru method entity.fetchLazyField()// line 3 ) 现在,如果我删除@Transactional() 。 我相信一旦获取entity1就会关闭会话,并且将为line2使用单独的会话。 对 ? 在第3行(一旦@Transactional被删除),我是否能够获取数据或会话被关闭应该抛出exception? 我没有粘贴大的xml配置和完整的dao代码,只是用实体管理器获取etity。 事务传播属性是Required

StAX – 从xml读取base64字符串到db

我正在使用StAX读取我的文件,其中包含一些Base64数据,并使用Hibernate将其保存到数据库中。 XML: lololencoded12 encodedlolos32 …………………………. 要读取和保存的代码: xmlif = (XMLInputFactory2) XMLInputFactory2.newInstance(); xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.FALSE); xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE); xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE); xmlif.configureForLowMemUsage(); List entities = new ArrayList(); FileInputStream fis = new FileInputStream(filename); XMLStreamReader2 xmlr = (XMLStreamReader2) xmlif.createXMLStreamReader(filename, fis); int eventType = xmlr.getEventType(); String curElement = “”; while (xmlr.hasNext()) { eventType = xmlr.next(); switch (eventType) { case XMLEvent.START_ELEMENT: curElement=xmlr.getName().toString(); if (“base64”.equals(curElement)) […]