小编alg*_*los的帖子

Hibernate,Java:没有关闭会话或会话

我已经在Stackoverflow上看到了这种问题,但没有任何东西可以帮助我解决我的问题.

我是Hibernate的新手,有一个用Java和MySQL制作的项目,因此使用hibernate.我设法访问我的数据,修改它们,删除它们,但我阻止了一个方法因为我有一个例外到达..并且看到我理解仍然不是我管理的所有线程都没有删除这个bug:

这是我的错误:

org.hibernate.LazyInitializationException严重:懒得初始化角色集合:DAO.User.files,没有关闭会话或会话org.hibernate.LazyInitializationException:懒得初始化角色集合:DAO.User.files,no会话或会话在org.hibernate.collection.AbstractPersistentCollection.initialize上的org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)中关闭. AbstractPersistentCollection.java:343)位于javaapplication5.JavaApplication5.main(JavaApplication5.java:37)的DAO.UserDAO.removeGroupAddUserFiles(UserDAO.java:252)的org.hibernate.collection.PersistentSet.add(PersistentSet.java:189)

这是我的Java类:

public static void main(String[] args) {
        GroupDAO grDAO = new GroupDAO();
        List[] lists = grDAO.removeGroup(grDAO.getGroupById(1));

        FileDAO fiDAO = new FileDAO();
        fiDAO.removeGroupAddFiles(lists);

        UserDAO usDAO = new UserDAO();
        usDAO.removeGroupAddUserFiles(lists);
    }
Run Code Online (Sandbox Code Playgroud)

GroupDAO.java:

public List[] removeGroup(Group group) {
        Set<File> setFiles = group.getFiles();
        Set<User> setUsers = group.getUsers_1();
        List[] lists = new List[2];

        Iterator<File> itFiles = setFiles.iterator();
        Iterator<User> itUsers = setUsers.iterator();
        List<File> listFiles = new ArrayList<File>();
        List<User> listUsers = new ArrayList<User>();
        while (itFiles.hasNext()) {
            listFiles.add(itFiles.next());
        }
        while (itUsers.hasNext()) {
            listUsers.add(itUsers.next()); …
Run Code Online (Sandbox Code Playgroud)

java session hibernate

8
推荐指数
1
解决办法
2万
查看次数

在JPanel的一部分中绘制而不重新绘制其余部分

我正在尝试用Java创建一个Mastermind.代码并不是很难,但我希望有一个非常好的界面.我有一个JPanel,它占用了我所有的JFrame,我使用surchargind repaint()方法绘制了这个JPanel :

public void paint(Graphics g) //méthode permettant de dessiner les éléments sur la carte
   {
   super.paintComponents(g);
   Graphics gr;
   gr = MasterMindPane.getGraphics();

   img = MasterMindPane.getToolkit().getImage("images/plateau4-8.jpg");
   gr.drawImage(img, 0, 0, 600, 720, this);

   gr = bouleRougePane.getGraphics();
   img = bouleRougePane.getToolkit().getImage("images/bouleRouge.png");
   //gr.drawImage(img, 535, 303, 45, 45, this);
   gr.drawImage(img, 0, 0, 45, 45, this);
   gr = bouleOrangePane.getGraphics();
   img = bouleOrangePane.getToolkit().getImage("images/bouleOrange.png");
   //gr.drawImage(img, 535, 303, 45, 45, this);
   gr.drawImage(img, 0, 0, 45, 45, this);
}
Run Code Online (Sandbox Code Playgroud)

当我点击一个有Panel的图像时,我画出一个黄色圆圈:

private void bouleRougePaneMouseClicked(java.awt.event.MouseEvent evt) {                                            
   Graphics2D g2d = (Graphics2D) …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel repaint

5
推荐指数
1
解决办法
3530
查看次数

预取相关django

我正在开发用Django编写的应用程序,但在使用select_related和prefetch_related进行正确请求时遇到一些问题

我有三种型号:

class Intervention(BaseModel):
    date = DateField()
    housing = ForeignKey('contract.Housing', related_name='interventions')

class Housing(BaseModel):
    address = CharField(max_length=CHAR_FIELD_LENGTH) 

class Tenant(BaseModel):
    name = CharField(max_length=CHAR_FIELD_LENGTH)
    phone = CharField(max_length=CHAR_FIELD_LENGTH, blank=True, null=True)
    housing = ForeignKey(Housing, related_name='tenants')
Run Code Online (Sandbox Code Playgroud)

我要求干预模型,如果要访问房屋信息,只需使用select_related:

Interventions.object.select_related("housing").filter(...)
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何使用prefetch_related访问租户:

Interventions.object.select_related("housing").prefetch_related("housing__tenants") 
Run Code Online (Sandbox Code Playgroud)

似乎不起作用,因为每次我尝试访问租户列表时都会进行查询。有没有一种方法可以访问租户列表,最好是对I进行过滤(例如找到第一个没有名称的租户)。

感谢您的回答。

阿尔盖洛斯

* 编辑:这是一些代码:*

我要求像我说的那样:

interventionPreventivesVisits = InterventionPreventiveVisit.objects.select_related("housing").prefetch_related("housing__tenants").filter(date__range=(self.weekDays[0], self.weekDays[len(self.weekDays)-1]))
Run Code Online (Sandbox Code Playgroud)

self.weekDays是一个天数表,用于在日历中显示干预。

然后,我要显示没有名称的承租人:

在我的模板中,我遍历干预:

{%for inter in interventions %}
    {%if day == inter.date %}
        {{ inter | get_schedule_html_formated | safe}}
    {%endif%}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我有一个templateTag来显示HTML:

def get_schedule_html_formated(intervention):
    housingTenant = None
    for tenant in intervention.housing.tenants.all(): # Here it …
Run Code Online (Sandbox Code Playgroud)

python django django-queryset

4
推荐指数
1
解决办法
7749
查看次数

标签 统计

java ×2

django ×1

django-queryset ×1

hibernate ×1

jpanel ×1

python ×1

repaint ×1

session ×1

swing ×1