Tag: hibernate

如何从我的控制器中加载Hibernate / JPA中的延迟获取项目

我有一个Person类: @Entity public class Person { @Id @GeneratedValue private Long id; @ManyToMany(fetch = FetchType.LAZY) private List<Role> roles; // etc } 有一个懒惰的多对多的关系。 在我的控制器中,我有 @Controller @RequestMapping("/person") public class PersonController { @Autowired PersonRepository personRepository; @RequestMapping("/get") public @ResponseBody Person getPerson() { Person person = personRepository.findOne(1L); return person; } } 而PersonRepository就是这个代码,按照这个指南写的 public interface PersonRepository extends JpaRepository<Person, Long> { } 但是,在这个控制器中我实际上需要懒惰数据。 […]

使用Log4j XMLconfiguration文件configurationHibernate日志logging?

我一直没有find任何有关如何使用Log4j的XML样式configuration文件来configurationHibernate日志的文档。 这甚至可能或者我有使用属性风格的configuration文件来控制Hibernate的日志? 如果任何人有任何信息或文件的链接,将不胜感激。 编辑: 只是为了澄清,我正在寻找一个实际的XML语法来控制Hibernate的例子。 EDIT2: 这是我在我的XMLconfiguration文件中。 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="info"/> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} – %m%n"/> </layout> </appender> <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender"> <param name="file" value="Program-Name.log"/> <param name="MaxFileSize" value="1000KB"/> <!– Keep one backup file –> <param name="MaxBackupIndex" […]

JSP中的$ {employee.id}抛出java.lang.NumberFormatException:对于inputstring:“id”

我有一个JSP页面,当在<c:forEach>显示来自下方的List<Employee>时,可以正常工作。 @RequestMapping(value = { "getAllEmployees", "/" }) public ModelAndView getAllEmployees() { // logger.info("Getting the all Employees."); List<Employee> employeeList = employeeService.getAllEmployees(); return new ModelAndView("employeeList", "employeeList", employeeList); } 而从下面的方法显示List<Employee>时,相同的JSP引发exception。 @RequestMapping("searchEmployee") public ModelAndView searchEmployee(@RequestParam("searchName") String searchName) { // logger.info("Searching the Employee. Employee Names: " + searchName); List<Employee> employeeList = employeeService.getAllEmployees(searchName); System.err.println("Employee count = "+employeeList.size()); return new ModelAndView("employeeList", "employeeList", […]

hibernate标准:没有映射关联的连接表

我想使用Hibernate的标准API来制定一个连接两个实体的特定查询。 比方说,我有两个实体,宠物和拥有者拥有多个宠物的所有者,但关键的是该关联没有映射到Java注释或XML中。 通过hql,我可以通过在查询中指定连接(而不是将一组宠物添加到所有者类)来select拥有名为“fido”的宠物的所有者。 同样可以使用hibernate条件吗? 如果这样怎么样? 谢谢,J

hibernate中JOIN和JOIN FETCH的区别

请帮我理解在哪里使用常规的JOIN和JOIN FETCH。 例如,如果我们有这两个查询 FROM Employee emp JOIN emp.department dep 和 FROM Employee emp JOIN FETCH emp.department dep 他们之间有什么区别? 如果是,哪一个要用?

正确的hibernate批注byte

我有一个应用程序使用hibernate3.1和JPA注释。 它有一些带有byte []属性(1k-200k大小)的对象。 它使用JPA @Lob注释,而且hibernate 3.1可以在所有主要数据库上正确读取这些数据,这似乎隐藏了JDBC Blob供应商的特性(就像它应该这样做)。 @Entity public class ConfigAttribute { @Lob public byte[] getValueBuffer() { return m_valueBuffer; } } 我们不得不升级到3.5,当我们发现,hibernate3.5 打破(并不会修复)这个注解组合postgresql(没有解决方法)。 到目前为止,我还没有find一个明确的解决scheme,但我注意到,如果我只是删除@Lob,它使用postgresqltypesbytea(工作,但只在postgres)。 annotation postgres oracle works on ————————————————————- byte[] + @Lob oid blob oracle byte[] bytea raw(255) postgresql byte[] + @Type(PBA) oid blob oracle byte[] + @Type(BT) bytea blob postgresql once you use […]

Hibernate中的persist()和merge()有什么区别?

Hibernate中的persist()和merge()有什么区别? persist()可以创build一个UPDATE&INSERT查询,例如: SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); A a=new A(); session.persist(a); a.setName("Mario"); session.flush(); 在这种情况下查询将会像这样产生: Hibernate: insert into A (NAME, ID) values (?, ?) Hibernate: update A set NAME=? where ID=? 所以persist()方法可以生成一个Insert和一个Update。 现在用merge() : SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); Singer singer = new Singer(); singer.setName("Luciano Pavarotti"); session.merge(singer); session.flush(); 这是我在数据库中看到的: SINGER_ID […]

绕过Hibernate中的GeneratedValue(合并数据不在数据库?)

我的问题与[1]或[2]中描述的相同。 我需要手动设置一个默认的自动生成的值( 为什么?导入旧数据 )。 正如在[1]中所描述的,使用Hibernate的entity = em.merge(entity)将会做到这一点。 对我来说不幸的是, 我既没有错误,也没有任何其他的警告。 该实体不会出现在数据库中 。 我正在使用Spring和Hibernate EntityManager 3.5.3-Final。 有任何想法吗?

hibernate oracle序列产生很大的差距

我使用的是hibernate 3,oracle 10g。 我有一张桌子:主题。 定义在这里 CREATE TABLE SUBJECT ( SUBJECT_ID NUMBER (10), FNAME VARCHAR2(30) not null, LNAME VARCHAR2(30) not null, EMAILADR VARCHAR2 (40), BIRTHDT DATE not null, constraint pk_sub primary key(subject_id) USING INDEX TABLESPACE data_index ) ; 当插入一个新的主题,sub_seq被用来创build一个主题ID,定义在这里 create sequence sub_seq MINVALUE 1 MAXVALUE 999999999999999999999999999 START WITH 1 INCREMENT BY 1 CACHE 100 NOCYCLE ; […]

Hibernate:一对一延迟加载,可选= false

我遇到了一对一延迟加载在hibernate中无法正常工作的问题。 我已经解决了 ,但仍然没有正确理解会发生什么。 我的代码( 懒加载不工作在这里 ,当我拉人 – 地址也被提取): @Entity public class Person{ @Id @SequenceGenerator(name = "person_sequence", sequenceName = "sq_person") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "person_sequence") @Column(name = "id") private long personID; @OneToOne(mappedBy="person", cascade=CascadeType.ALL, fetch = FetchType.LAZY) private Adress address; //.. getters, setters } @Entity public class Address { @Id @Column(name="id", unique=true, nullable=false) @GeneratedValue(generator="gen") @GenericGenerator(name="gen", strategy="foreign", […]