我有两个表: Ta和Tb 。 他们有完全相同的表结构,但不同的表名称。 我尝试创build一个实体类来映射表结构。 我的一些常用应用程序模块将使用这个实体类根据参数dynamic查询和更新Ta或Tb 。 可以在JPA中完成吗? 我如何编写程序在运行时将实体类dynamic映射到不同的表?
我想使用JPA(eclipselink)从我的数据库中获取数据。 数据库被其他许多来源所改变,因此我想回到执行的每个查找的数据库。 我已经阅读了许多关于禁用caching的post,但这似乎并没有工作。 有任何想法吗? 我试图执行下面的代码: EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default"); EntityManager em = entityManagerFactory.createEntityManager(); MyLocation one = em.createNamedQuery("MyLocation.findMyLoc").getResultList().get(0); MyLocation two = em.createNamedQuery("MyLocation.findMyLoc").getResultList().get(0); System.out.println(one==two); 一个==两个是真的,而我希望它是假的。 我已经尝试添加每个/所有以下到我的persistence.xml <property name="eclipselink.cache.shared.default" value="false"/> <property name="eclipselink.cache.size.default" value="0"/> <property name="eclipselink.cache.type.default" value="None"/> 我也尝试添加@Cache注释到实体本身: @Cache( type=CacheType.NONE, // Cache nothing expiry=0, alwaysRefresh=true ) 我误解了什么?
我find了概述的版本,但我想要的是坚实的。 有谁知道这些实体?
我有一个使用JPA加载和保存域对象的DAO。 我终于设法得到交易的东西工作,现在我有另一个问题。 在我的testing案例中,我打电话给我的DAO加载一个给定id的域对象,检查它是否被加载,然后调用相同的DAO删除刚加载的对象。 当我这样做时,我得到以下内容: java.lang.IllegalArgumentException: Removing a detached instance mil.navy.ndms.conops.common.model.impl.jpa.Group#10 at org.hibernate.ejb.event.EJB3DeleteEventListener.performDetachedEntityDeletionCheck(EJB3DeleteEventListener.java:45) at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:108) at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:74) at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:794) at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:772) at org.hibernate.ejb.AbstractEntityManagerImpl.remove(AbstractEntityManagerImpl.java:253) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:600) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:180) at $Proxy27.remove(Unknown Source) at mil.navy.ndms.conops.common.dao.impl.jpa.GroupDao.delete(GroupDao.java:499) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:600) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) […]
我试图忽略使用Entity Framework 6.0 rc1的“自动”迁移。 我的问题是,我现在不想要这个function,每当我的应用程序运行,我可以看到所有的实体日志试图创build所有的表。 期待谢谢。
在我看来,我必须检索一个对象,然后用下面的entity framework删除它 var customer = context.Customers.First(c => c.Id = 1); context.DeleteObject(customer); context.Savechanges(); 所以我需要打两次数据库。 有更简单的方法吗?
我试图收集一些关于以下方法的信息,以便在父实体被删除时自动删除子实体。 似乎最常用的方法是使用这三个注释: cascade = {“remove”}或orphanRemoval = true或ondelete =“CASCADE” 。 关于第三个问题,我有点困惑: ondelete =“CASCADE” ,正如关于这个主题官方文档的解释非常稀缺),如果有人能够证实我从我的研究中收集和理解的以下信息 ,networking和经验… 它能做什么 级联= { “去除”} ==>当拥有边实体时,反面的实体被删除。 即使你和其他拥有一方的实体在许多方面。 – 应该用于收集(所以在OneToMany或ManyToMany关系) – 在ORM中实现 orphanRemoval =真 ==>反面的实体被删除当拥有边实体是和它不再连接到任何其他拥有的一方实体。 (参考doctrine official_doc – 在ORM中的实现 – 可以与OneToOne,OnetoMany或ManyToMany一起使用 onDelete = “CASCADE” ==>这会将On Delete Cascade添加到数据库中的外键列 – 这个策略有点棘手,但可以非常强大和快速。 (参考doctrine official_doc …但没有读更多的解释) – ORM不得不做更less的工作(与之前的两个做法相比),因此应该有更好的performance。 其他信息 – 所有这三种方式都是在双向关系实体( right ??? )上实现的 – 使用cascade = […]
数据库已成功创build(与表一样),但不会播种。 我花了好几个小时,读了大量的文章,但一直没有得到它。 有什么build议么? 在附注中,是否可以调用初始化程序,而不必在客户端中引用我的DatabaseContext? 我已经包含了所有我能想到的相关代码。 如果有其他事情会有所帮助,请让我知道。 我试过的东西: 我删除了我的连接string(因为它默认为sqlexpress,只是名称改变了) 我将DropCreateDatabaseIfModelChanges更改为DropCreateDatabaseAlways,仍然相同。 编辑:真奇怪的事情是一次,但我不知道如何或为什么它再次打破。 我假设连接string,但谁知道。 DatabaseInitializer.cs public class DatabaseInitializer : DropCreateDatabaseIfModelChanges<DatabaseContext> { protected override void Seed(DatabaseContext context) { // Seeding data here context.SaveChanges(); } } DatabaseContext.cs public class DatabaseContext : DbContext { protected override void OnModelCreating(DbModelBuilder mb) { // Random mapping code } public DbSet<Entity1> Entities1 { get; set; […]
1.快速浏览 1.1目标 我想要实现的是一个创build/编辑用户工具。 可编辑的字段是: 用户名(types:文本) plainPassword(types:密码) 电子邮件(types:电邮) 组(types:集合) avoRoles(types:集合) 注意:最后一个属性没有命名为$ roles,因为我的User类正在扩展FOSUserBundle的User类,覆盖angular色带来了更多的问题。 为了避免它们,我决定将我的angular色集合存储在$ avoRoles下 。 1.2用户界面 我的模板由两部分组成: 用户表单 表显示$ userRepository-> findAllRolesExceptOwnedByUser($ user); 注意:findAllRolesExceptOwnedByUser()是一个自定义存储库函数,返回所有angular色的子集(尚未分配给$ user的子集)。 1.3所需的function 1.3.1添加angular色: 当用户单击angular色表中的“+”(添加)button时 然后 jquery从Roles表中删除该行 和 jQuery的增加新的列表项到用户窗体(avoRoles列表) 1.3.2删除angular色: 当用户单击“用户”窗体中的“x”(删除)button(avoRoles列表) 然后 jquery从用户窗体(avoRoles列表)中删除该列表项 和 jquery添加新行到angular色表 1.3.3保存更改: 当用户点击“Zapisz”(保存)button THEN用户表单提交所有字段(用户名,密码,电子邮件,avoRoles,组) 并将avoRoles作为angular色实体的ArrayCollection保存(ManyToMany关系) 并将组保存为angular色实体的ArrayCollection(ManyToMany关系) 注意:只能将现有的angular色和组分配给用户。 如果由于任何原因,他们没有find表格不应该validation。 2.代码 在本节中,我将介绍或简要描述此操作背后的代码。 如果描述不够,你需要看到代码告诉我,我会粘贴它。 我并不是把所有东西都粘贴在一起,以避免垃圾邮件给你带来不必要的代码。 2.1用户类 我的用户类扩展了FOSUserBundle用户类。 namespace Avocode\UserBundle\Entity; use FOS\UserBundle\Entity\User as BaseUser; […]
我正在做一些网页抓取,网站经常使用HTML实体来表示非ASCII字符。 Python是否有一个实用程序接受一个带有HTML实体的string并返回一个unicodetypes? 例如: 我回头: ǎ 这是一个带有音调标记的“ǎ”。 在二进制中,这表示为16位01ce。 我想将html实体转换为值u'\u01ce'