Tag: eclipselink

通过JPA / Eclipselink无法看到更新的数据(在数据库中)

我有使用JPA / Eclipselink连接到数据库的Oracle DB和Java项目。 问题是当数据库中的某些数据更新(手动使用Oracle SQL开发人员)时,这些数据不能通过JPA看到,只能看旧值。 什么会导致这样的问题?

如何配置eclipselink JTA序列连接池

我在MySQL上遇到了TABLE序列的并发问题,并发现该解决方案可能正在为序列生成配置一个单独的连接池。 在这个stackoverflow问题中,它指向Eclipselink文档 ,其中有一个示例为空的部分。 我似乎无法找到任何如何配置的示例。 我的persistence.xml目前在下面。 我应该更改什么以确保在单独的事务/连接池上执行序列生成。 知道我应该寻找什么来确定它的工作也很好,除了等待看死锁是否停止发生。 非常感谢 jdbc/myapp jdbc/myapp/nonjta false

Spring + JPA:不从数据库中获取对象

我正在实施一个在线商店。 我有以下代码来保存订单: @Service @Transactional public class OrderServiceImpl extends GenericServiceImpl implements OrderService { @Inject private ItemRepository itemRepository; @Override public void saveOrder(Order order) { this.updateItemsAccordingToOrderedQuantities(order); repository.save(order); } private void updateItemsAccordingToOrderedQuantities(Order order) { List orderedItems = order.getOrderedItems(); for (OrderedItem orderedItem : orderedItems) { // fetch from database Item item = itemRepository.findOne(orderedItem.getItem().getId()); item.reduceWeightInColdStoreBy(orderedItem.getWeight()); itemRepository.update(item); } } } 在实际保存订单之前,我更新了每个商品的“重量”属性(一些数量与此订单一起销售,因此剩下的更少)。 OrderedItem对象保存对Item的引用,但我想从数据库中获取新的Item […]

使用JPA删除实体的问题

UPDATE 我的朋友做了相同的代码行,他的行很正常。 会是什么呢? 我使用NetBeans 7.0.1,他的是6.9.1。 我的GlassFish是3.1,他是3.0.1 更新结束 @Inheritance(strategy= InheritanceType.JOINED) @Entity @Table(name = “vehicle”) @DiscriminatorColumn(name = “type”, discriminatorType = DiscriminatorType.INTEGER) @NamedQueries({ @NamedQuery(name = “Vehicle.findAll”, query = “SELECT v FROM Vehicle v”)}) public class Vehicle implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = “id”) private Integer id; @JoinColumn(name = […]

JPA ManyToMany在哪里注释

我正在使用JPA / EclipseLink 2.5.2,并希望在ManyToMany Mapping中添加一个额外的where子句。 SQL代码如下所示: SELECT * FROM Friends f INNER JOIN User u ON f.friend_id = u.id WHERE f.verified=1; 所以我设法做了JoinMapping: @Entity @NamedQueries({ @NamedQuery(name=”User.findAll”, query=”SELECT u FROM User u”), @NamedQuery(name=”User.login”, query=”SELECT a FROM User a WHERE a.username = :name and a.password = :password”), @NamedQuery(name=”User.findId”, query=”SELECT a FROM User a WHERE a.id = :id”), @NamedQuery(name=”User.findName”, […]

如何使用EclipseLink调用函数

如何调用使用EclipseLink返回sys_refcursor的Oracle函数? 有一个文档说明了调用一个函数,但不知道如何调用一个返回sys_refcursor的函数。 http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_namedstoredfunctionquery.htm 我试过如下 @NamedStoredFunctionQuery(name = “findEmployees”, functionName = “getEmps”, parameters = { @StoredProcedureParameter(queryParameter = “user”, name = “username”, direction = Direction.IN, type = String.class) } , returnParameter = @StoredProcedureParameter(queryParameter = “c_cursor”) ) Oraclefunction CREATE or REPLACE FUNCTION getEmps (username varchar2) RETURN SYS_REFCURSOR AS c_cursor SYS_REFCURSOR; BEGIN OPEN c_cursor FOR SELECT * FROM employees where […]

Eclipselink Pooling相当于C3PO

我试图阻止这种日志记录 从服务器成功收到的最后一个数据包是10,255毫秒。 成功发送到服务器的最后一个数据包是0毫秒前。 我已经在persistence.xml中使用auto reconnect设置了连接url 我想要的是会有一个连接池,每分钟或每小时检查连接,以便连接仍然存在。 Hibernate具有c3po的这个function。 喜欢ff。 1800 5 50 50 50 5 5 1 true select 1; true C3P0 无论如何,我可以在eclipselink中做到这一点?

java.time YearMonth作为实体内的类型

你如何在一个实体中使用YearMonth? 我看过很多关于转换器的堆栈溢出答案? 这还需要,如果是这样的话怎么样? @Basic(optional = false) @NotNull @Column(name = “cc_exp_date”) private YearMonth ccExpDate; 我得到的例外情况如下。 我可以将其转换为set方法中的日期,并在实体的get方法中转换回YearMonth作为解决方法吗? MysqlDataTruncation: Data truncation: Incorrect date value: ‘\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B”H\xB2\x0C\x00\x00xpw\x06\x0C\x00\x00\x07\xE2\x02x’ for column ‘cc_exp_date’ at row 1

JPA更新多对多删除记录

我在两个实体之间有@ManyToMany关系。 当我在拥有方执行更新时,JPA似乎从我的数据库中删除所有链接的记录并重新插入它们。 对我来说这是一个问题,因为我有一个MySQL触发器,在删除记录之前触发。 关于如何解决这个问题的任何想法? @Entity public class User { @Id @Column(name=”username”) private String username; … @ManyToMany @JoinTable(name=”groups”, joinColumns= @JoinColumn(name=”username”, referencedColumnName=”username”), inverseJoinColumns=@JoinColumn(name=”groupname”, referencedColumnName=”type_id”)) private List types; … } @Entity public class UserType { @Id @Column(name=”type_id”) private String id; @ManyToMany(mappedBy=”types”) private List users; … }

如何防止Eclipselink使用缓存消耗所有内存?

我的应用程序提取了大量的几何数据。 我使用Eclipselink 2.4.1将数据保存在MySQL数据库中。 应用程序以批处理方式工作,即我收集一组数据,然后保留它,继续下一组,持续等等。 另一个应用程序稍后会读取该数据并对其进行处理,但这个问题仅涉及收集数据的第一个应用程序。 数据收集应用程序运行了一段时间。 我使用一组固定的EntityManagers ,它们在启动时创建并直播,直到应用程序完成。 提取是multithreading的,每个线程有一个EntityManager。 我的问题是无论我如何配置缓存,一段时间后EclipseLink会占用所有内存,过了一会儿我得到一个OutOfMemoryError 。 我使用VisualVM提取我使用Eclipse Memory Analyzer分析的堆转储。 EntityManagerImpl.extendedPersistenceContext.cloneMapping持有可疑数量的内存。 此映射包含对我的几何数据对象的引用。 随着时间的推移,这个映射的大小会达到数百兆字节,这就是造成内存不足错误的原因。 我已经尝试过以下方法: 我通过配置eclipselink.persistence-context.reference-mode=weak使用弱引用。 我已经validation了EntityManagerImpl.extendedPersistenceContext.cloneMapping的类型是IdentityWeakHashMap 。 从关于弱缓存的文档中我可以预期,使用weak模式可以解决问题。 不幸的是,垃圾收集器仍然没有声明条目,我不断出现内存错误。 我试图用eclipselink.cache.shared.default=false完全关闭缓存。 问题依然存在。 有没有人建议这里发生了什么以及如何解决这个问题? 我也愿意接受如何规避问题的建议。