我观察到奇怪的事实(基于hibernate标签中的问题),人们仍然在积极地使用XML文件而不是注释来指定它们的ORM(Hibernate / JPA)映射。 有一些情况下,这是必要的: 您正在使用提供的类,并且想要映射它们。 您正在编写一个API,其域类可以在没有JPA提供程序的情况下使用,因此您不希望强制使用JPA / Hibernate依赖项。 但我认为这些并不常见。 我的假设是: 人们习惯于XML文件,不舒服/不想学习使用注释的方法。 Java 1.5之前的版本被强加在这个项目上,而且没有什么可做的 人们不知道注释是一个全function的XML映射replace。 遗留系统得到支持,因此改变方法被认为是有风险的 人们担心混合注解(元信息)与他们的类是错误的。 任何其他可能的解释?
我有一个名为SynonymMapping的类,它具有映射为CollectionOfElements的值集合 @Entity(name = "synonymmapping") public class SynonymMapping { @Id private String keyId; //@CollectionOfElements(fetch = FetchType.EAGER) @CollectionOfElements @JoinTable(name="synonymmappingvalues", joinColumns={@JoinColumn(name="keyId")}) @Column(name="value", nullable=false) @Sort(type=SortType.NATURAL) private SortedSet<String> values; public SynonymMapping() { values = new TreeSet<String>(); } public SynonymMapping(String key, SortedSet<String> values) { this(); this.keyId = key; this.values = values; } public String getKeyId() { return keyId; } public Set<String> […]
我正在寻找资源,展示如何将MongoDB与Hibernate集成(最好是在Spring中),以便我可以在RDBMS和NoSql之间切换:有没有人有过这样的经验?
我想更好地理解之间的差异 (1)传统的多值关系/关联 @Entity -> @OneToMany -> @Entity 和 (2) embedded式(和基本)types的JPA2 集合 @Entity -> @ElementCollection -> @Embeddable 我看到了语法上的差异,但不知道是否也有性能影响 。 在引擎盖下,数据库实现看起来非常相似。 直觉上,我通常使用@ElementCollection 组合场景 。 但即使如此,感觉非常类似CascadeType=DELETE 。 我在这里错过了本质吗? 为了某些目的,一个比另一个更有效率吗? 谢谢J.
在JPA中,有什么办法可以复制Hibernate的saveOrUpdate行为 , saveOrUpdate public void saveOrUpdate(Object object) throws HibernateException Either save(Object) or update(Object) the given instance, depending upon resolution of the unsaved-value checks (see the manual for discussion of unsaved-value checking). This operation cascades to associated instances if the association is mapped with cascade="save-update". Parameters: object – a transient or detached instance containing new or […]
我没有问题testing我的DAO和服务,但是当我testingINSERT或UPDATE我想回滚事务,而不是影响我的数据库。 我在我的服务中使用@Transactional来pipe理事务。 我想知道,是否有可能知道一个事务是否可以正常工作,但是为了防止改变数据库而回滚它? 这是我的testing: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:/META-INF/spring.cfg.xml") @TransactionConfiguration(defaultRollback=true) public class MyServiceTest extends AbstractJUnit38SpringContextTests { @Autowired private MyService myService; @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Test public void testInsert(){ long id = myService.addPerson( "JUNIT" ); assertNotNull( id ); if( id < 1 ){ […]
我build立了一个应用程序并部署在本地……并且工作正常。 我将它部署在远程服务器上,并开始获取主题行中提到的exception。 这不是因为有任何防火墙问题。 我改变了我的hibernate.xml连接通过我的IP地址,而不是本地主机,现在我在我的本地部署的应用程序相同的超时。 当我使应用程序运行超过一天时,出现此错误。 自己进行交易或闭幕式后,我没有执行任何操作。 我在hibernate.cfg.xml使用以下属性 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://myremotehost:3306/akp</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.show_sql">false</property> <property name="hibernate.current_session_context_class">thread</property> <property name="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property> 引起:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接closures后,不允许任何操作。连接被驱动程序隐式closures。 详细: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed by the driver. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) at com.mysql.jdbc.Util.getInstance(Util.java:384) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015) […]
比方说,我有两个表(A,B),如: A {id, a, c} B {id, b, c} 我也有他们的实体。 我想编写一个HQL,使得结果集会像(其中Ac = Bc): (a1, b1, c1) (a2, b2, c2) (a3, b3, c3) … 由于子句不支持hibernate我卡住,我不知道如何编写查询。
我想select一个单独的列而不是整个对象,使用Hibernate。 到目前为止,我有这样的: List<String> firstname = null; firstname = getSession().createCriteria(People.class).list(); 我的问题是,上面的代码返回整个人民表作为一个对象,而不是“名字”。 我不知道如何指定只返回“firstname”,而不是整个对象。
我有三个类的名称是用户和这个用户有其他类的实例。 喜欢这个; public class User{ @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL) public List<APost> aPosts; @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL) public List<BPost> bPosts; } public class BPost extends Post { @ManyToOne(fetch=FetchType.LAZY) public User user; } public class APost extends Post { @ManyToOne(fetch=FetchType.LAZY) public User user; } 它是这样的工作,但在数据库中生成emty表。 其中必须包含外键。 当我试图使用mappedBy和JoinColumn annotains我失败了。 我该如何解决这个问题? 额外的信息: 当我改变了; @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="id") public User user; 和 […]